基于iframe网址改变X-UA兼容meta标签使用javascript(changing X-UA

2019-10-17 17:04发布

背景:

我在一个大型网站的工作与在新的浏览器打破一些旧的控制,所以我们不得不强制IE7文档模式与标准元X-UA兼容的标签。 我们已经取代了大多数问题控制,但没有更换他们所有的时间和预算。 我们希望有一个不具有在当前文档模式,以使控制页IE浏览器利用客户端的性能提升的是,它提供。 问题是,我有麻烦的是,新的ie浏览器来切换模式像我想要的。 该网站的导航使用iframe,我觉得可能是我的主要问题。 我有我使用iframe父页面上的JavaScript。

我希望能够用JavaScript来做到这一点,并一直在试图这样做。 下面是我在做什么。 它successfuly更改标签,但是浏览器似乎并不关心。 我需要做什么才能改变浏览器要考虑的标签?

     //tag swapping code 
     function FixIEMetaTag(url) {

         //Remove current IE meta Tag
         var iefixTagOld = document.getElementsByTagName('meta')[0];
         if (iefixTagOld) { iefixTagOld.parentNode.removeChild(iefixTagOld); }

         //Determine Document Type for IE browsers
         var contentVal = 'IE=Edge';             
         if (IsPageWithBadGrid(url)) { contentVal = 'IE=7'; }

         //Create and add new IE meta Tag
         var iefixTag = document.createElement('meta');
         iefixTag.setAttribute("http-equiv", "X-UA-Compatible");
         iefixTag.setAttribute("content", contentVal);
         var theHead = document.getElementsByTagName('head')[0];
         theHead.insertBefore(iefixTag, theHead.firstChild);
     }

     //navigation code
     function GoToPage(url) {

         if (window.frames["ifrm"]) {

             FixIEMetaTag(url);

             window.open(url,"ifrm");
             return false;
         }

         return true;
     }

Answer 1:

为了有效,在X-UA-Compatible的加载页面时meta标签必须存在。 通过JavaScript执行的时候,已经太晚了改变。

如果你真的需要切换IE7模式和关闭的iframe的内容,最好的办法是保持与不同页面的两个版本的X-UA-Compatible的标签,或者通过URL参数传递兼容性标志(例如, ?mode=ie7?mode=edge )。



Answer 2:

正如我应该基于迄今为止的答案和评论做什么想法?

听起来好像我需要重新加载主页更改IE meta标签。 根据我当前的代码即时通讯思想是这样的:

 //navigation code
 function GoToPage(url) {

     if (window.frames["ifrm"]) {

         var oldContentTagValue = 'IE=Edge';  
         //Determine Previous IEType tag
         var iefixTagOld = document.getElementsByTagName('meta')[0];
         if (iefixTagOld) { 
             oldContentTagValue = (?);//something fancy to get current tag type

         }

         //Determine Document Type for IE browsers
         var contentVal = 'IE=Edge';             
         if (IsPageWithBadGrid(url)) { contentVal = 'IE=7'; }

         if(oldContentTagValue !=contentVal ){
             //redirect to current page with contenttypetag stuff and iframe url in query string
         }
         else{
             window.open(url,"ifrm");
         }
         return false;
     }

     return true;
 }

然后,我将设置iframe网址与正确的meta标签上的负载,基于查询字符串参数...思考?



文章来源: changing X-UA-Compatible meta tag with javascript based on iframe url