我最近采用了一种新的方法,通过调试帮助了很多,但我最近发现它只适用于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可以正常工作。
答案 0 :(得分:0)
最终,Chrome和Safari都可以加载blob,但最后却没有带有url参数的问号。
这将有效:
<script src="blob:123123123123">
这不会
<script src="blob:123123123123?arg1=hat">