0

ページ (ここではdomain.com/subdirectory/page.htmlと呼びます) に、次のようなリンクがあります。 <a href="javascript:window.open('someurl','_blank');">Link</a>

新しいウィンドウは完全に開きますが、問題は、既存のウィンドウが{domain.com}/{subdirectory}/0にリダイレクトされ、サブディレクトリに 0 を追加してそこに移動しようとする理由がわかりません.

window.open を onclick に移動して、href を "void(0)" にし、onclick でスパンに変更しようとしましたが、どのオプションを試しても同じ結果が得られます。私が望むのは、新しいウィンドウがポップアップし、既に表示されているページに何も起こらないことだけです.

IE9 と Chrome でも同じことが起こります。

target="_blank" ではなく window.open を使用している理由は、そのウィンドウからメニューやその他のものを削除してスペースを節約したいからです。

発見された回答
問題を要約したとき、コードを単純化しすぎて誰も回答できなくなってしまいました (もちろん、意図したわけではありません)。申し訳ありません。

実際の window.open コマンド (URL を除く) は次のとおりです。window.open('[hidden url]'_blank',height='400px',width='450px',location=0,menubar=0,resizable=0,status=0,titlebar=0,toolbar=0);

問題は「location = 0」でした。window.open のチュートリアルを読んだとき、URL を表示したくない場合はこれを 0 に設定するように言われました。個人的には気にしませんでしたが、情報を表示する領域が多ければ多いほどよいと考えました。結局のところ、「場所」は URL であり、ブール値のプロパティではありません。

「location = 0」を削除すると、期待どおり/希望どおりに機能し始めました。

助けてくれてありがとう。

4

4 に答える 4

1

onclick イベントに入れる必要があります。return false;ブラウザがリンクをたどらないようにするためにも追加する必要があります。

<a href="#" onclick="window.open('someurl','_blank'); return false;">Link</a>

それのjsFiddleが働いています。

これを行う別の、少しクリーンな方法を次に示します

<a id="link" href="#">Link</a>
<script type="text/javascript">
    var link = document.getElementById("link");

    link.onclick = function() {
        window.open('someurl','_blank');
        return false;
    }
</script>

あなたのシナリオはわかりませんが、これはおそらく理想的な方法です。

<a target="_blank" href="someurl">Link</a>

クリーンでシンプルで、まったく同じことを行います。

于 2013-07-23T18:46:05.403 に答える
1

onclick を使用して、イベント ハンドラーから false を返します。

<a href="#" onclick="window.open('someurl','_blank'); return false;">Link</a>

また、Javascript を HTML から分離することをお勧めします。リンクが 1 つしかない場合は、次のようなことができます。

<a id="linkid" href="someurl" target="_blank">Link</a>

</body>次に、終了タグの前とそのリンクタグの後のどこかに:

<script>
  document.getElementById('linkid').onclick = function(){
      window.open('someurl','_blank');
      return false;
  }
</script>
于 2013-07-23T18:46:17.627 に答える
0

問題を要約したとき、コードを単純化しすぎて、誰も答えられなくなってしまいました (もちろん意図的ではありません)。申し訳ありません。

実際の window.open コマンド (URL を除く) は次のとおりです。window.open('[hidden url]'_blank',height='400px',width='450px',location=0,menubar=0,resizable=0,status=0,titlebar=0,toolbar=0);

問題は、location=0. のチュートリアルを読んだときwindow.open、URL を表示したくない場合はこれを 0 に設定するように言われました。個人的には気にしませんでしたが、情報を表示する領域が多ければ多いほどよいと考えました。結局のところ、locationは URL であり、ブール値のプロパティではありません。

削除するlocation=0と、期待どおり/望ましいように機能し始めました。

于 2016-02-24T15:56:08.077 に答える
0

JavaScript の学習に努めるべきです。それは本当に強力で、基本的なことを学ぶのはそれほど難しくありません。location という属性 (変数) を持つ window という名前の JavaScript オブジェクトがあります。それがあなたのページの URL ですので、 でwindow.open(..., location = 0, ...);開きたいページの URL を に設定していましたhttp://the_page_you_are_calling_from_url/0。そう...はい、場所が問題だったというあなたは正しかったです。

必要に応じて、 Mozilla ウィンドウ APIを見てください。

于 2016-02-24T17:01:33.947 に答える