Javascript 加载外部文件变量,同时避免浏览器外部文件缓存
我需要将时间戳附加到标记url中的javaScript文件,以避免缓存 stackoverflow中的这个函数似乎可以做到这一点:Javascript 加载外部文件变量,同时避免浏览器外部文件缓存,javascript,scope,Javascript,Scope,我需要将时间戳附加到标记url中的javaScript文件,以避免缓存 stackoverflow中的这个函数似乎可以做到这一点: <script type="text/javascript"> (function(){ var randomh=Math.random(); var e = document.getElementsByTagName("script")[0]; var d = document.createElement("script"); d.src =
<script type="text/javascript">
(function(){
var randomh=Math.random();
var e = document.getElementsByTagName("script")[0];
var d = document.createElement("script");
d.src = "TESTINGX.JS?x="+randomh+"";
d.type = "text/javascript";
d.async = true;
d.defer = true;
e.parentNode.insertBefore(d,e);
由于某种原因,变量没有得到全局范围(或者问题是其他的)
我的html如下所示:
<!DOCTYPE html>
<HTML><HEAD>
<script type="text/javascript">
(function(){
var randomh=Math.random();
var e = document.getElementsByTagName("script")[0];
var d = document.createElement("script");
d.src = "TESTINGX.JS?x="+randomh+"";
d.type = "text/javascript";
d.async = true;
d.defer = true;
e.parentNode.insertBefore(d,e);
})();
</script>
</HEAD><BODY>
<h1>WiFi Mini Web Server</h1>
<script>
document.write(hello); //hello var is contained in the TESTINGX.JS file\n\
</script>
</BODY></HTML>
(函数(){
var randomh=Math.random();
var e=document.getElementsByTagName(“脚本”)[0];
var d=document.createElement(“脚本”);
d、 src=“TESTINGX.JS?x=“+randomh+”;
d、 type=“text/javascript”;
d、 异步=真;
d、 延迟=真;
e、 parentNode.insertBefore(d,e);
})();
WiFi迷你网络服务器
document.write(你好)//hello var包含在TESTINGX.JS文件中\n\
试试这个
<script type="text/javascript">
(function(){
var randomh=Math.random();
var e = document.getElementsByTagName("script")[0];
var d = document.createElement("script");
d.src = "TESTINGX.JS?x="+randomh+"";
d.type = "text/javascript";
d.async = true;
d.defer = true;
e.parentNode.insertBefore(d,e);
document.write(hello);
})();
</script>
(函数(){
var randomh=Math.random();
var e=document.getElementsByTagName(“脚本”)[0];
var d=document.createElement(“脚本”);
d、 src=“TESTINGX.JS?x=“+randomh+”;
d、 type=“text/javascript”;
d、 异步=真;
d、 延迟=真;
e、 parentNode.insertBefore(d,e);
document.write(你好);
})();
试试这个
<script type="text/javascript">
(function(){
var randomh=Math.random();
var e = document.getElementsByTagName("script")[0];
var d = document.createElement("script");
d.src = "TESTINGX.JS?x="+randomh+"";
d.type = "text/javascript";
d.async = true;
d.defer = true;
e.parentNode.insertBefore(d,e);
document.write(hello);
})();
</script>
(函数(){
var randomh=Math.random();
var e=document.getElementsByTagName(“脚本”)[0];
var d=document.createElement(“脚本”);
d、 src=“TESTINGX.JS?x=“+randomh+”;
d、 type=“text/javascript”;
d、 异步=真;
d、 延迟=真;
e、 parentNode.insertBefore(d,e);
document.write(你好);
})();
为缓存破坏编写代码时,还要确保以“惰性”、“非阻塞”的方式加载脚本。这意味着加载DOM后将加载TESTING.js
。这也意味着document.write
脚本在加载js文件之前运行,并将所需的变量添加到全局范围
有几种解决方案:
1.从加载脚本中删除defer
和async
希望这能有所帮助。您编写的缓存破坏代码,也恰好确保了脚本以“惰性”、“非阻塞”的方式加载。这意味着加载DOM后将加载
TESTING.js
。这也意味着document.write
脚本在加载js文件之前运行,并将所需的变量添加到全局范围
有几种解决方案:
1.从加载脚本中删除defer
和async
希望这有帮助。如果您希望外部脚本在加载之前阻止所有其他内容,但仍然需要从动态URL加载它(听起来像这样),您应该能够
文档。直接编写脚本元素,而不是使用DOM方法
<!DOCTYPE html>
<html><head>
<script>
var randomh = Math.random();
document.write('<script src="TESTINGX.JS?x=' + randomh + '"></' + 'script>');
</script>
</head><body>
<h1>WiFi Mini Web Server</h1>
<script>
document.write(hello); // hello var is contained in the TESTINGX.JS file
</script>
</body></html>
var randomh=Math.random();
文件。写(“”);
WiFi迷你网络服务器
document.write(你好);//hello var包含在TESTINGX.JS文件中
如果您希望外部脚本在加载之前阻止所有其他内容,但仍然需要从动态URL加载它(听起来像这样),那么您应该能够文档。直接编写脚本元素,而不是使用DOM方法
<!DOCTYPE html>
<html><head>
<script>
var randomh = Math.random();
document.write('<script src="TESTINGX.JS?x=' + randomh + '"></' + 'script>');
</script>
</head><body>
<h1>WiFi Mini Web Server</h1>
<script>
document.write(hello); // hello var is contained in the TESTINGX.JS file
</script>
</body></html>
var randomh=Math.random();
文件。写(“”);
WiFi迷你网络服务器
document.write(你好);//hello var包含在TESTINGX.JS文件中
也许你的意思是var hello=“hello World!”;是的,我是这样写的,我只是在问问题时犯了一个打字错误;正在加载文件之前调用。您的意思可能是var hello=“hello World!”;是的,我是这样写的,我只是在问问题时犯了一个打字错误;是否在加载文件之前调用,以及是否删除var关键字?关闭var
应该会使变量本身具有全局性。我尝试过,但没有起作用,所以现在我认为问题可能与psr下面评论的内容有关,或者这两个问题结合在一起。现在我测试了psr的代码,删除了单词var,但仍然相同,如果删除了var关键字?关闭var
应该会使变量本身具有全局性。我尝试过,但没有成功,所以现在我认为问题可能与此相关