Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to open a new window or tab via javascript in windows phone 7 browser

Is it possible to open a new window or tab via javascript in Windows Phone 7 browser?

window.open does not appear to be supported nor does target='_blank'.

Am I missing something here? This basic feature works just fine on iphone and android. Any ideas on how I can get this working in Windows Phone 7?

like image 452
bmurmistro Avatar asked Aug 30 '12 16:08

bmurmistro


2 Answers

On Windows Phone 7 this is not possible programmatically. It's all in the users hand.

To cite a Microsoft employee:

"A user can open a link in a new Tab by tapping and holding the link to get the context menu but an anchor or scripts request to target a new window is ignored.

There are several reasons for this:

  • Cross-window communications are not supported.
  • Windows Phone only has one instance of the browser so new "windows" have to be opened as Tab's.
  • The browser experience is full screen so the user has no good visual cue that they have moved to a new Tab unless they explicity request it.
  • Navigating "back" in a new Tab exits the browser which would be confusing to the user if they did not know a new Tab was created."
like image 114
acme Avatar answered Oct 25 '22 13:10

acme


If you are trying to add this feature for in-ap browser control, I can suggest you one way.

You have to inject a java-script on every webpage the browser control is able to load the page successfully. In the java-script use window.extern.notify to invoke the ScriptNotify function in your code behind. On the detection of the appropriate message create a new instance of browser control and add it to an array or list. Thereby you can emulate the new tab feature for in-app browser control.

the JS code to be injected may be like this String NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

Which can be injected using browser.InvokeScript("eval", NEW_TAB_FUNCTION);

In ScriptNotify check for addnewtab (keep IsScriptEnabled = True)

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

Note that I have overridden the window.open function in the JS with a function which will be injected every time on a new webpage in order to get notified of user input.

Also note this works only for WebBrowser Control and not external browser.

like image 34
Milan Aggarwal Avatar answered Oct 25 '22 15:10

Milan Aggarwal