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

前端 未结 3 1940
小鲜肉
小鲜肉 2020-12-06 01:48

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

window.open does not appear to be suppor

相关标签:
3条回答
  • 2020-12-06 02:14

    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."
    0 讨论(0)
  • 2020-12-06 02:29

    My workaround this issue is simple:

    window.open
    

    returns null if failed, so in that case I open it in the same window:

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

    which is a good practice to have a fallback anyway...

    0 讨论(0)
  • 2020-12-06 02:33

    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.

    0 讨论(0)
提交回复
热议问题