簡體   English   中英

如何阻止Internet Explorer重寫我的文本?

[英]How do I prevent internet explorer from rewriting my text?

我有一個包含url的javascript變量,通過從php輸出腳本標記來填充。 目的是在某些情況下將網頁更改為該網址。

var url = "/somepage?q=3&region=1";

問題是網址包含序列“&reg”,Internet Explorer在沒有被詢問的情況下變為“®”。

我已經嘗試使用htmlspecialchars轉義整個網址,這打破了其他瀏覽器。 關閉怪癖模式可能有所幫助,但它不是當前系統的選項。 添加到腳本標記沒有做任何事情。

編輯:我想出了一個解決方案,用連接“轉義”網址。

var url = '<?php implode( "&'+'", explode( '&', '/somepage?q=3&region=1' ) ); ?>';

我也意識到我應該提一下如何更改頁面:

document.location.href = url;

編輯:結果我的腳本標記出錯了。 顯示相同“問題”的最小示例:

<script type="text/javascript" />
    var url = "/test?mode=preview&region=1";
</script>

自動關閉開始標記是重要的事情。

它應該是var url = "/somepage?q=3&amp;region=1";

始終使用&amp; 在URL中,所以瀏覽器理解這是一個查詢分隔符,並不認為它引用某些htmlentity(這里的問題是IE不關心分號是否存在並假設&reg應該是&reg;

編輯:在我回答之后添加了真實的背景,正如問題本身和評論中指出的那樣,你不應該使用&amp; 如果您打算使用某個window.location來重定向該變量

但是,由於我們手頭有PHP,如果javascript重定向不是其他復雜腳本的一部分,我建議使用這樣的PHP代碼:

<?php
header('Location: http://domain/somepage?q=3&region=1');
exit();
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM