【问题标题】:Chrome and Safari not accepting Blobs as Script src argumentsChrome 和 Safari 不接受 Blob 作为 Script src 参数
【发布时间】:2017-01-11 04:49:16
【问题描述】:

我最近一直在做我的 include 一种新方法,这对调试有很大帮助,但我最近发现它只适用于 Firefox。

代码示例如下。在 Firefox 上运行时,会提示“Hello World”。在 Safari 和 Chrome 中运行时,会出现 blob 的 404。这段代码在 sn-p 中的作用与在 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 也可以正常工作。

【问题讨论】:

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


    【解决方案1】:

    最终,Chrome 和 Safari 都可以加载 blob,但它们的末尾不能有问号和 url 参数。

    这将起作用:

    <script src="blob:123123123123">
    

    这不会

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

    【讨论】:

      猜你喜欢
      • 2021-09-11
      • 2021-01-27
      • 2011-12-23
      • 2010-11-05
      • 1970-01-01
      • 2012-01-14
      • 2011-03-21
      • 2016-09-04
      相关资源
      最近更新 更多