我正在尝试理解js中的全局范围,以便我可以将来自不同服务器的var调用到网页中并使用js进行访问,但这个简单的测试甚至无法正常工作。
远程php脚本'remotescript.php'包括:
<script language='javascript' type='text/javascript'>
window.myValue=5;
</script>
本地页面包括:
<div class='widget-content'>
<script language='javascript' src='remotescript.php' type='text/javascript'>
</script>
hi!
</div>
<script language='javascript' type='text/javascript'>
alert(window.myValue);
</script>
我在警报中得到'未定义'。
有什么迹象表明我做错了,或者这是否有效? tyvmia
答案 0 :(得分:4)
<强>更新强>
您的外部脚本remotescript.php不起作用,因为其中包含<script>
个标记 - 您需要删除它们并只包含JavaScript代码。因此,在您的简单示例中,您的remotescript.php应该只包含以下行:
window.myValue=5;
或者您可以使用var
:
var myValue = 5;
(另请注意,您的任何脚本元素都不需要language='javascript'
。)
原始回答:
如果在脚本元素中包含JS语句,它是外部脚本的链接(这不仅适用于创建变量,它适用于任何语句),它将无法工作。关闭外部脚本,然后启动一个新的脚本元素:
<div class='widget-content'>
<script language='javascript' src='http://example.com/files/blockip.php' type='text/javascript'></script>
<script>
var myValue=5;
</script>
hi!
</div>
<script language='javascript' type='text/javascript'>
alert(myValue);
</script>
如果在外部文件中声明全局变量也可以。如果它们是全局变量,则多个脚本可以访问彼此的变量。