IE11用户代理字符串中断<iframe> </iframe>

时间:2014-04-25 15:59:55

标签: wordpress internet-explorer iframe internet-explorer-11

我正在使用Wordpress网站,该网站使用iframe对页面上填充的按钮进行外部调用,并提供指向同一外部网站的链接以预约约会。

iframe在除IE11之外的所有浏览器中都能正常运行。 IE11中的用户代理字符串设置为default,但如果我将IE浏览器工具中的字符串切换为IE10及其中的任何内容,则该按钮将呈现并完美运行。

那么,是否有人知道如何将用户代理字符串设置为任何内容,但&#34;默认&#34;?注意:这与设置User-Agent不同,我已经完成了,但它不起作用。 (或者是吗?......以及如何?)

我尝试过的例子:

<meta http-equiv="X-UA-Compatible" content="IE=10"/>及其变体。

更新:另外,<iframe>加载了doctypehtml声明。这可能是我问题的一部分吗? (我无法访问由iframe加载的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

1 个答案:

答案 0 :(得分:-1)

请更改您对IE的检测,不要依赖UA字符串,而是使用条件评论和document.documentMode

var tmp = document.documentMode, e, isIE;

// Try to force this property to be a string. 
try{document.documentMode = "";}
catch(e){ };

// If document.documentMode is a number, then it is a read-only property, and so 
// we have IE 8+.
// Otherwise, if conditional compilation works, then we have IE < 11.
// Otherwise, we have a non-IE browser. 
isIE = typeof document.documentMode == "number" || eval("/*@cc_on!@*/!1");

// Switch back the value to be unobtrusive for non-IE browsers. 
try{document.documentMode = tmp;}
catch(e){ };

请参阅http://www.pinlady.net/PluginDetect/IE/


如果您的代码使用此属性进行检测,请检查https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.userAgent


简而言之,不是破坏iframe的UA字符串,它是iframe中的逻辑被破坏,因为它依赖于UA嗅探而不是特征检测。

如果您无法控制iframe中显示的内容,最好的办法是联系您在iframe中显示的内容的提供商,并要求他们更新代码以正确处理IE11。