Chrome和Safari不接受Blob作为脚本src参数

时间:2017-01-11 04:49:16

标签: google-chrome safari http-status-code-404 blob

我最近采用了一种新的方法,通过调试帮助了很多,但我最近发现它只适用于Firefox。

下面是代码示例。在Firefox上运行时," Hello World"警报。在Safari和Chrome中运行时,会出现404的blob。这个代码在一个代码片段中没有像在html文件中那样做,所以我在下面添加了明文。

<script>

function includeScript(script) {

  var file = new Blob([script], {
    type: "text/javascript"
  });
  var url = URL.createObjectURL(file);

  var addMe = document.createElement("script");
  addMe.src = url + "?test";
  addMe.type = "text/javascript";

  document.head.appendChild(addMe);
}

function tryIt() {
  includeScript("alert('hey'); foo.bar");
}
</script>


<body>
  <button onclick="tryIt()">Try It</button>
</body>

为什么Chrome和Safari会为blob返回404,有没有办法解决这个问题?

我确保在Firefox上启用了本地strict_orgin_policy,它仍然有效,所以我不认为这是本地资源问题。此外,如果在Chrome控制台中完成,blob可以正常工作。

1 个答案:

答案 0 :(得分:0)

最终,Chrome和Safari都可以加载blob,但最后却没有带有url参数的问号。

这将有效:

<script src="blob:123123123123">

这不会

<script src="blob:123123123123?arg1=hat">