2

大量の JavaScript を含むページには、JavaScript 内で JS 文字列としてエンコードされた URL も含まれます。

問題は、Chrome (または単に開発者ツール?) がこれらのエンコードされた URL に、あたかも HTML の一部であるかのように移動しようとすることです。

これは、ページに多くの JavaScript がある場合にのみ発生するようです。

ページは多かれ少なかれ次のようになります。

<body>
    ....
    <script type="text/javascript">
        //<![CDATA[
        google.maps.event.clearListeners(window.kgmm["marker32"],"click");
        google.maps.event.addListener(window.kgmm["marker32"],"click",clicked);
        window.kgmp["marker54"]=new InfoBox({
            content: "<div class=\"wrapBox\" align=\"left\"><div class=\"imageBox\"><a href=\"#ir_rih\" target=\"_blank\"><span class=\"imageWrap\">"

/* the issue -> */  +"<img src=\"?ajax=1&cls=owAjaxHandler&mtd=thumbnail&amp;i=wp-content\/uploads\/2011\/07\/Bahrija &amp; Fomm ir-rih08.jpg&amp;w=115&amp;h=115\" border=\"0\" alt=\"\"\/><\/"

                    +"span><\/a><\/div><div class=\"specsBox\"><h2>Fomm Ir-Rih<\/h2><div class=\"shortDesc\"><\/div><a class=\"moreInfo\" href=\"#ir_rih\" onclick=\"return krtShowTabByHash(this);\">more details &raquo;<\/a><\/div><\/div>" ,
            disableAutoPan: false,
            maxWidth: 0,
            pixelOffset: new google.maps.Size(-214, 0),
            zIndex: null
        });
        //]]>
    </script>
    ....
</body>

以下は、コンソールでどのように表示されるかのスクリーンショットです。

スクリーンショット


修正を求めているわけではないことに注意してください。コードを改善する方法についてアドバイスしないでください。

修正ではなく、なぜこれが起こっているのかについての答えを探しています。

注意: CDATA は、chrome が javascript コンテンツを XML 要素として解析するのを止めるはずではありませんでしたか?


問題の原因となっている URL の例:

  1. まずはこちらへ。
  2. コンソールを開く ( Right Click -> Inspect Element -> Console tab)
  3. ページ リストの 2 番目の項目「Mdina, Rabat, Dingli & Baħrija」をクリックします。
  4. ページの読み込み中にコンソールを見続けると、前述のエラーが表示されるはずです。

注意:誰かがこの質問を「ローカライズされすぎている」とマークしました。それは真実ではないことを指摘したい。私は複数の Web サイトでこの問題に遭遇しましたが、Web サイトがまだ機能しているため、(今まで) あまり考えたことはありませんでした。

4

1 に答える 1

0

i問題はURLパラメータのエスケープであるというドーナツにお金をかけます:

src=\"?ajax=1&cls=owAjaxHandler&mtd=thumbnail&amp;i=wp-content\/uploads\/2011\/07\/Bahrija &amp; Fomm ir-rih08.jpg&amp;w=115&amp;h=115\"

基本的に、バックスラッシュのエスケープは URL に対しては機能しません。その URL に移動したい場合は、次のように送信する必要があります。

src=\"?ajax=1&cls=owAjaxHandler&mtd=thumbnail&amp;i=wp-content%2Fuploads%2F2011%2F07%2FBahrija%20%26%20Fomm%20ir-rih08.jpg&amp;w=115&amp;h=115\"

Chris 編集: javascript 文字列としてデコードすると、次のようになります。

src="?ajax=1&cls=owAjaxHandler&mtd=thumbnail&amp;i=wp-content/uploads/2011/07/Bahrija &amp; Fomm ir-rih08.jpg&amp;w=115&amp;h=115"
于 2011-10-10T14:26:46.717 に答える