2012-08-30 7 views
12

Windows Phone 7のブラウザでjavascript経由で新しいウィンドウまたはタブを開くことはできますか?WindowsのJavaScriptを使用して新しいウィンドウまたはタブを開く方法7の携帯電話

window.openはサポートされていないようでも、target='_blank'でもありません。

ここに何か不足していますか?この基本的な機能は、iPhoneとAndroidでうまく動作します。 Windows Phone 7でこれをどのように動作させることができるかについてのアイデアはありますか?

+0

ブラウザ設定では、[新しいタブでリンクを開く]オプションがあります。私はそれがアプリによってオーバーライドされることがあるとは思わない。 – Osiris

答えて

27

Windows Phone 7では、これはプログラムではできません。それはユーザーの手の中にあります。

「ユーザーがコンテキストメニューを取得 へのリンクをタップして保持することによって新しいタブでリンクを開くことができますが、アンカーやスクリプトが新しい ウィンドウをターゲットに要請:Microsoft employeeを引用する

無視され

これにはいくつかの理由があります。。

  • クロスウィンドウの通信がサポートされていませんが
  • Windows Phoneには ブラウザのインス​​タンスが1つしかないため、新しい「ウィンドウ」をタブとして開く必要があります。
  • ブラウザのエクスペリエンスはフルスクリーンなので、ユーザーが明示的に要求しない限り、 が新しいタブに移動したという視覚的な兆候はありません。新しいタブで「戻る」ナビゲーション
  • は、彼らが新しいタブが作成された知らなかった場合、ユーザーに混乱 になり、ブラウザを終了します。」
+0

それは私が恐れていたものです。確認していただきありがとうございます! – bmurmistro

+0

すばらしい答え。これはWindows Phone 8の場合と同じですか? – dan

+0

新しいウィンドウを開くことができるかどうかを確認する回避策がありますか?そうでない場合はフォールバックメソッドを使用できますか? –

3

この機能を追加しようとしている場合

ブラウザコントロールがページを正常に読み込むことができるすべてのWebページにJavaスクリプトを挿入する必要があります。Javaスクリプトでは、window.externを使用します。あなたのコードの中でScriptNotify関数を呼び出すように通知します。適切なメッセージが検出されたら、ブラウザコントロールの新しいインスタンスを作成しますそれを配列またはリストに追加します。これにより、アプリ内ブラウザコントロール用の新しいタブ機能をエミュレートできます。

JSコードは、私が上書きされている

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

注(IsScriptEnabled = Trueを保つ)addnewtabためScriptNotifyチェックでbrowser.InvokeScript("eval", NEW_TAB_FUNCTION);

を使用して注入することができる。このString NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

等であってもよい注入されますJSのwindow.open関数は、新しいWebページに毎回挿入され、ユーザーの入力を通知される関数を持っています。

また、これはWebブラウザーコントロールでのみ動作し、外部ブラウザーでは機能しません。

+0

お返事ありがとうございます。残念ながら、私はちょうど "外部"ブラウザを扱っています。 – bmurmistro

+0

その場合、2番目の答えが有効であることを証明します。 –

0

私の回避策は、この問題は簡単です:

window.open 

nullを返し、その場合には、私は同じウィンドウで開きますので、失敗した場合:

持っていることをお勧めし
var win = window.open(href, '_blank'); 
    if(!win || win==null){ 
     window.location.href = href; 
    }else{ 
     win.focus();  
    } 

フォールバックとにかく...

+0

Hey Tomer、これはWindows Phone 10 Edgeブラウザでは機能しません。何か案が? –

+0

@AshutoshJha窓の大きさと関係があると思います。こちらをご覧ください:https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11026637/こちら:https://answers.microsoft.com/en-us/insider/forum/insider_internet- insider_spartan-insiderplat_pc/windows-edge-does-not-open-the-new-window-directly/272c607a-253f-47a4-8ec7-4236d30940a1 –

関連する問題