ブラウザjavascript
で新しいウィンドウまたはタブを開くことはできますか?Windows Phone 7
window.open
もサポートされていないようtarget='_blank'
です。
ここで何か不足していますか?この基本的な機能は、iPhone と Android で問題なく動作します。Windows Phone 7 でこれを機能させる方法についてのアイデアはありますか?
ブラウザjavascript
で新しいウィンドウまたはタブを開くことはできますか?Windows Phone 7
window.open
もサポートされていないようtarget='_blank'
です。
ここで何か不足していますか?この基本的な機能は、iPhone と Android で問題なく動作します。Windows Phone 7 でこれを機能させる方法についてのアイデアはありますか?
Windows Phone 7では、これはプログラムでは不可能です。それはすべてユーザーの手に委ねられています。
マイクロソフトの従業員を引用するには:
「ユーザーは、リンクを長押ししてコンテキストメニューを表示することで、新しいタブでリンクを開くことができますが、新しいウィンドウをターゲットにするアンカーまたはスクリプトの要求は無視されます。
これにはいくつかの理由があります。
- クロスウィンドウ通信はサポートされていません。
- Windows Phoneにはブラウザのインスタンスが1つしかないため、新しい「ウィンドウ」をタブとして開く必要があります。
- ブラウザエクスペリエンスは全画面表示であるため、ユーザーは、明示的に要求しない限り、新しいタブに移動したことを視覚的に示すことができません。
- 新しいタブで「戻る」をナビゲートするとブラウザが終了し、新しいタブが作成されたことをユーザーが知らなかった場合、ユーザーは混乱します。」
アプリ内ブラウザ制御にこの機能を追加しようとしている場合は、1つの方法を提案できます。
ブラウザコントロールがページを正常にロードできるすべてのWebページに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
(keep IsScriptEnabled = True
)をチェックします
void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e)
{
if (e.Value == "addnewtab")
{
//do work here
}
}
JSのwindow.open関数を、ユーザー入力の通知を受け取るために新しいWebページに毎回挿入される関数でオーバーライドしたことに注意してください。
また、これはWebBrowser Controlでのみ機能し、外部ブラウザでは機能しないことに注意してください。