ホームページ  >  記事  >  ウェブフロントエンド  >  JS で新しいウィンドウを開き、browser_javascript スキルによってブロックされないようにする方法

JS で新しいウィンドウを開き、browser_javascript スキルによってブロックされないようにする方法

WBOY
WBOYオリジナル
2016-05-16 16:22:281536ブラウズ

この記事の例では、JS を使用して新しいウィンドウを開き、ブラウザーによってブロックされないようにする方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

従来の window.open() メソッドを使用して新しいウィンドウを開くと、ブラウザによってブロックされます。では、ブラウザによってブロックされずに JS で新しいウィンドウを開くにはどうすればよいでしょうか。実際には、まだ方法はあります。ここでは、この問題を解決する方法を分析します

私も最近そのような問題に遭遇したので、新しいウィンドウをポップアップする方法を共有します。皆さんもぜひ追加してください...

最初の方法は、ネイティブ JavaScript の window.open() メソッドを使用することです (ほとんどの場合、ブラウジングによって自動的にブロックされます)

2 番目の方法は、フォームの送信をシミュレートすることです。原則として、開きたい URL アドレスとしてフォームのアクションを指定し、ターゲットを「_blank」に設定します。

コードをコピー コードは次のとおりです:
document.getElementById("msgTxt").innerHTML="";
var s=document.getElementById("hiddenlink");
s.submit();

ただし、フォーム送信をシミュレートする方法もブロックされる可能性があります...

3 番目のタイプ、シミュレートされたハイパーリンク () のクリック

ボタンを押して新しいタブを開きたい場合、押されたリンクをシミュレートしてリンクを開くことができます。
ただし、jQuery では、a.click()、a.trigger('click') などを使用しても、リンクのデフォルト イベントは実行されません。
次のコードは、リンク クリック イベントの生成をシミュレートし、デフォルトでリンクを開くイベントを実行します。

ただし、注意すべき点が 1 つあります。IE ブラウザでは、IE9 以降のみが document.createEvent 関数をサポートしているため、次のコードを IE で実行する場合は、IE9 以降が必要です

コードをコピー コードは次のとおりです。
var a = $("test").get(0);
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
a.dispatchEvent(e);


4番目の方法は、ブラウザのバブリングイベントを使用する方法です(再掲)

コードをコピー コードは次のとおりです:
clickOpenWin: function(f){
var dataKey = "clickOpenWin.dataKey"
var me = $(this);
var A = me.data(dataKey);
var returnData = null;
If(!A){
A = $("");
me.data(dataKey, A);
A.click(function(e){
if(returnData){
A.attr("href", returnData);
}else {
A.前(私);
e.stop();
}
});
}
me.mouseover(function(){$(this).before(A).appendTo(A);});
me.mouseout(function(){A.before($(this));});
me.click(function(){
A.attr("href", "#|");
returnData = f.apply(this, argument);
});
}

1) まず、最後の効果について説明します。これは、「A」を使用してポップアップ ウィンドウをトリガーする要素を含めるというものです。元のクリック イベントは、ポップアップの URL を返す必要があります。次の文に対応するウィンドウを開きます。

コードをコピー コードは次のとおりです。
returnData = f.apply( this、引数);

2) 次に、ポップアップ迎撃戦略について説明します。詳細は説明しませんが、この戦略は「A」自体を傍受するものではありません。 3) 最後に、A とインクルードした後、イベントがバブルアップするので、通常のクリックで A のダイナミック リンク アドレスを生成し、A の元のクリック イベントをトリガーして完了です。
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。