为什么jQuery .attr()在IE9中不起作用?

Gan*_*alf 3 html javascript css jquery data-uri

以下代码只是HTML,CSS和JavaScript"注入"现有iFrame('iframe_id')的组合.虽然以下代码适用于Firefox,Chrome和Safari,但它在IE9中不起作用.我检查了一些相关的和现有的答案,其中大多数都与IE8或更早版本中的问题有关,这在这种情况下没有帮助.它与jQuery .attr()有关吗?IE9是否存在问题(如旧的IE版本)?如果是,我该如何解决?

$("#iframe_id").attr(
    "src", "data:text/html;charset=utf-8," + 
    "<!DOCTYPE html>"+
    "<html>"+
    "<head>"+
    "<style>"+
    "/********** CSS stuff here **********/"+
    "</style>"+
    "</head>"+
    "<body>"+
    "<!--------- HTML stuff here ---------->"+
    "<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"><" + "/script>" +    
    "<script>"+
    "/*********** jQuery stuff here *****/"+
    "<" + "/script>"+     
    "</body>"+    
    "</html>"
    );
Run Code Online (Sandbox Code Playgroud)

在IE9中,我得到典型的"网页无法显示..."错误.

我已经回顾了以下答案,但这没有帮助.

IE中jQuery attr()的替代方案?

attr()不在IE中工作

jquery attr()在IE中不起作用

ade*_*neo 5

出于安全原因,数据URI仅限于下载的资源.
数据URI不能用于导航,脚本编写或填充框架或iframe元素.

MSDN

这适用于所有版本的Internet Explorer.

要使其正常工作,您可以:

var html = "<!DOCTYPE html>"+
    "<html>"+
    "<head>"+
    "<style>"+
    "/********** CSS stuff here **********/"+
    "</style>"+
    "</head>"+
    "<body>"+
    "<!--------- HTML stuff here ---------->"+
    "<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"><" + "/script>" +    
    "<script>"+
    "/*********** jQuery stuff here *****/"+
    "<" + "/script>"+     
    "</body>"+    
    "</html>";

var frame = document.getElementById('iframe_id');
frame.contentWindow.document.write(html);
Run Code Online (Sandbox Code Playgroud)