Подтвердить что ты не робот

Как открыть новое окно или вкладку через javascript в Windows Phone 7 browser

Можно ли открыть новое окно или вкладку через javascript в браузере Windows Phone 7?

window.open не поддерживается, а target='_blank'.

Я что-то упустил? Эта базовая функция отлично работает на iphone и Android. Любые идеи о том, как я могу заставить это работать в Windows Phone 7?

4b9b3361

Ответ 1

В Windows Phone 7 это невозможно программно. Все это в руке пользователей.

Чтобы указать сотрудник Microsoft:

"Пользователь может открыть ссылку в новой вкладке, нажав и удерживая ссылку на получить контекстное меню, но запрос на привязку или скрипты для установки на новый окно игнорируется.

Для этого есть несколько причин:

  • Поддержка межсетевого окна не поддерживается.
  • Телефон Windows имеет только один экземпляр браузер, поэтому новые" окна "должны быть открыты как вкладка.
  • В браузере полноэкранный режим, поэтому у пользователя нет хорошей визуальной подсказки, что они переместились на новую вкладку, если они не попросят ее объяснить.
  • Навигатор" назад "в новой вкладке выходит из браузера, который будет смущая пользователя, если они не знали, что была создана новая вкладка."

Ответ 2

Если вы пытаетесь добавить эту функцию для управления браузером in-ap, я могу предложить вам один из способов.

Вам нужно ввести java- script на каждую веб-страницу, которую браузер может загрузить с этой страницы успешно. В java- script используйте window.extern.notify, чтобы вызвать функцию ScriptNotify в вашем коде. При обнаружении соответствующего сообщения создайте новый экземпляр элемента управления браузера и добавьте его в массив или список. Таким образом, вы можете эмулировать новую вкладку для управления браузером в приложении.

вводимый код JS может быть таким, как String NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

Который может быть введен с использованием browser.InvokeScript("eval", NEW_TAB_FUNCTION);

В ScriptNotify проверьте addnewtab (сохранить IsScriptEnabled = True)

    void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e)
    {
        if (e.Value == "addnewtab")
        {   
            //do work here
        }
    }

Обратите внимание, что я переопределил функцию window.open в JS с функцией, которая будет вставляться каждый раз на новую веб-страницу, чтобы получать уведомление о вводе пользователя.

Также обратите внимание, что это работает только для WebBrowser Control, а не для внешнего браузера.

Ответ 3

Мой обход этой проблемы прост:

window.open

возвращает null, если не удалось, поэтому в этом случае я открою его в том же окне:

var win = window.open(href, '_blank');
    if(!win || win==null){
        window.location.href = href;
    }else{
        win.focus();     
    }

что является хорошей практикой, чтобы иметь откат в любом случае...