【发布时间】:2017-04-17 10:27:25
【问题描述】:
我有一个带有两个<script> 标签的test.html 文件。我需要从一个到另一个共享一个变量..
示例代码:
<script type="text/javascript">
var test = false;
function testing() {
test = true;
alert('I am inside..');
}
testing();
</script>
...
<script type="text/javascript">
if (test == true) {
alert('working');
} else {
alert('failed');
}
</script>
输出总是:
我在里面..
失败
我也尝试使用 window 类,但这没关系.. (window.test)
我必须做什么才能获得“工作”警报?
如果有人可以帮助我,谢谢。我看到了一些类似的问题,但答案对我来说不是解决方案。
编辑:
原代码(简体):
<head>
...
<script type="text/javascript" src="detectblocker.js"></script>
<!-- GitHub: https://github.com/sitexw/BlockAdBlock/ -->
...
</head>
<body>
<script type="text/javascript">
var blocker = false;
function adBlockDetected() {
blocker = true;
alert('inside');
}
if(typeof blockAdBlock === 'undefined') {
adBlockDetected();
} else {
blockAdBlock.onDetected(adBlockDetected);
}
blockAdBlock.setOption({
checkOnLoad: true,
resetOnEnd: true
});
</script>
<div class="header">
...
</div>
<div class="content_body">
<div class="requirs">
<ul>
...
<script type="text/javascript">
if (blocker == true) {
document.write("<li>enabled!</li>")
} else {
document.write("<li>disabled!</li>")
}
</script>
...
</ul>
</div>
</div>
...
</body>
输出是alert()“inside”和<li>“disabled”..(拦截器已启用..)。
我能看到的唯一区别是在第一个 <script> 标签的末尾:
blockAdBlock.setOption({
checkOnLoad: true,
resetOnEnd: true
});
那么为什么 sn-p 可以工作而我的代码却不行呢?令人困惑...
【问题讨论】:
-
我将您的 sn-p 转换为现场演示,并且……它有效。不管是什么问题,你都没有在你的问题中暴露出来。
-
@xShirase — 从一开始就没有出现这个问题。编辑只是强调它从未出现过。
-
我复制了该代码并尝试了。效果很好。问题出在哪里?
-
@13loodH4t — 编辑后……它仍然输出“启用”,所以您似乎仍然没有提供minimal reproducible example
-
如果你点击了
if(typeof blockAdBlock === 'undefined')的else分支并且blockAdBlock.onDetected是异步的(听起来是这样),那么这是this question 的副本。由于您尚未提供minimal reproducible example,因此无法确定。
标签: javascript scope global var