【问题标题】:Internet Explorer: HTML entities in URLInternet Explorer:URL 中的 HTML 实体
【发布时间】:2017-08-11 02:38:15
【问题描述】:

我有以下 PHP 代码:

echo "<input type='image' src='myImage.png' onClick='javascript:location.href = \"index.php?p=1&copy=true\"' />";

如果我点击图片,Chrome 会重定向到 index.php?p=1&amp;copy=true。但如果我在 Internet Explorer 11 中单击该图像,它会重定向到 index.php?p=1©=true

Internet Explorer 似乎取代了 URL 中的 HTML 实体。

我尝试使用&amp;amp; 而不是&amp;,但我遇到了同样的问题:IE 将其替换为版权符号。

如何在我的网址中使用&amp;amp;copy? 我知道一种可能的解决方案是将&amp;amp;copy 替换为&amp;whatever,但我必须更改我的孔系统。

还有其他人有同样的问题:

https://gist.github.com/pguillory/5136408

【问题讨论】:

  • “我尝试使用 & insted of &,但我遇到了同样的问题:IE 将其替换为版权符号。” 你能举个例子吗?因为这是正确的做法。请记住:属性值文本是 HTML 文本,因此会解析命名实体。
  • 请注意,您不要在 onxyz 属性上使用 javascript:,仅在需要 URL 的地方使用。所以你不希望它在上面(不过它是无害的;JavaScript 引擎只是认为它是一个带标签的语句)。
  • @T.J.Crowder:你的onclick='location.href = "index.php?p=1&amp;amp;copy=true"' 不起作用。 IE 11 将 &amp;amp;copy 替换为 ©
  • 呃,复制了它:jsbin.com/dajihiwiwo

标签: javascript php html internet-explorer url


【解决方案1】:

正确的版本是&amp;amp;。遗憾的是,IE11 中确实存在一个老大错误,导致它采用 &amp;amp;copy 并将其转换为版权符号。

我找到了一种解决方法:在copy 中对c 进行百分比编码:

echo "<input type='image' src='myImage.png' onClick='location.href = \"index.php?p=1&amp;%63opy=true\"' />";
// --------------------------------------------------------------------------------------^^^

在 IE11 上仍然失败的正确版本示例:http://jsbin.com/dajihiwiwo/

适用于 IE11 的上述示例(也是正确的,只是更钝):http://jsbin.com/nehuxazeka/

【讨论】:

  • 感谢您的回答。我尝试了您的代码,但 IE 11 将我重定向到 index.php?p=1&amp;%63opy=true。您的 jsbin 链接在 IE 11 中有效。也许 duckduckgo 会有所不同?
  • @Pengxer:是的。刚刚尝试使用对查询字符串执行 nothing 的域,IE11 将 %63 留在那里。它不应该这样做。可爱的。
  • @Pengxer:也就是说:index.php?p=1&amp;%63opy=trueindex.php?p=1&amp;copy=true 在规范上相同。 PHP 是否没有在$_GET 中为您提供copy 值?
  • 是的,你是对的。我只查看了 URL,并将其与您的 dadduckgo 示例进行了比较,发现了不同之处。但是您的代码有效并且设置了 $_GET['copy'](在 PHP 中)。谢谢!
  • 我认为这是公认的答案,因为它是我的问题的真正解决方案(解决方法)。如果您需要一个简单的解决方案,请查看 LooInSpain 答案。仅当您有除 html 实体之外的其他变量时,它才有效。
【解决方案2】:

为什么不直接交换变量?

而不是index.php?p=1&amp;copy=true,它仍应与index.php?copy=true&amp;amp;p=1 一起使用。

【讨论】:

  • 不错,实用的解决方案适用于这种情况。
  • 感谢您的回答。它对我有用。但是,如果您在 URL 中仅使用 html 实体,仍然会有问题。但这(实际上)不是我的问题:D
猜你喜欢
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多