1

次のhtmlスニペットをIE8とIE7で英語以外の文字(ヘブライ語と中国語の両方を試しました)で実行しましたが、2番目のリンクが正しく機能しません。
警告ボックスに表示されるテキストが壊れています。これはIE8とIE7で発生しますが、Firefoxでは発生しません。Windowsの地域設定には依存しません。

htmlスニペットは次のとおりです(簡潔にするためにhtmlヘッダーとフッターは省略されています。content-typeは "text / html; charset = utf-8"であり、応答ヘッダーも同様です)。

<p>
  <a href="javascript:alert('abשלוםab')">link with English and Hebrew text</a>
  <a href="javascript:alert('ab%D7%A9%D7%9C%D7%95%D7%9Dab')">same text, url encoded</a>
</p>

2番目のリンクをクリックするとポップアップするアラートボックスは次のとおりです。

代替テキスト

「שלום」の文字列はutf-8で8バイトとしてエンコードされているため、8つの%NNアイテムがあり、アラートボックスには8つの奇妙な文字もあります。問題は、Firefoxのように、これがutf-8エンコーディングテキストであることをIEに認識させるにはどうすればよいですか?

アップデート:

(最小限の例の)完全なhtmlはここから入手できます。、、、を
試しましたがdecodeURI、成功しませんでした。リンクをからに移動すると、問題が解決します。私の問題は、一部のコンテンツが自分の制御できない他のソースから生成されており、href属性内にjavascriptリンクが含まれることになったということです。decodeURIComponentunescapehrefonclick

4

1 に答える 1

4

URIエスケープが確実に機能していないため、代わりにJavaScriptUnicodeエスケープを使用した方がよいのではないかと思います。たとえば(JavaScript文字列内)。\u1234ここで、1234は表示するUnicodeコードポイントです。javascript:また、コードをJavaScriptファイルなどに移動する場合に備えて、URIの外部で作業できるという利点もあります。

したがって、コードポイントに関する返信に基づくと、次のようになります。

<a href="javascript:alert('ab\u05E9\u05DC\u05D5\u05DDab')">same text, using JavaScript escapes</a>

...私のテストでは次のようになります。

IE7:IE7の結果画像http://www.imagechicken.com/uploads/1269198244050004700.png

IE8:IE8の結果画像http://www.imagechicken.com/uploads/1269198387032872100.png(RD経由、したがって基本的な外観)

Chrome:Chromeの結果画像http://www.imagechicken.com/uploads/1269198434021743700.png

Firefox:Firefoxの結果画像http://www.imagechicken.com/uploads/1269198440077244000.png

(何らかの理由で、その最後のコードポイントについて意見の相違があるように思われます。)

于 2010-03-21T15:08:01.227 に答える