想知道如何从load js传递变量,如:
<script type="text/javascript" src="script.js?myVar=myValue"></script>
并使用并传递给script.js本身? 我之前知道声明变量,但我正在寻找url方式。
提前致谢。
答案 0 :(得分:3)
javascript无法访问该值。服务器必须查找并代表您将该值插入到呈现的javascript中。
通常情况下,模式更像是这样:
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
ObjFromScript.myVar = 'myValue';
ObjFromScript.doStuff();
</script>
答案 1 :(得分:2)
您必须在文档中找到<script>
标记并提取参数。使用此网站的一个突出示例是带有#xfbml=1
主题标签的网站。
但是,正确/好的方法是在script.js
中放置任何代码而不是函数,然后调用someFunction(myValue);
。
答案 2 :(得分:1)
您可以在客户端或服务器上执行此操作。在客户端上,获取script
元素并解析src
属性。
<script id="myScript" src="script.js?myVar=foo"></script>
<script>
var s = document.getElementById('myScript');
s.src; // parse it and extract myVar
</script>
在服务器上,设置路由,以便script.js
转到用PHP等服务器端语言编写的某个处理程序。在这种情况下,您可以动态输出script.js
。这是PHP中的一个例子。
script.js =&gt;的script.php
<?php
header('Content-Type: application/javascript');
$myVar = $_GET['myVar'];
?>
// optionally expose myVar inside JavaScript
var myVar = <?php json_encode($myVar) ?>;
// regular JavaScript
alert(myVar);
var x = 10;
答案 3 :(得分:0)
您可以使用document.currentScript
,但不受广泛支持。
var matches = document.currentScript.src.match(/\?myVar=([^&]+)/),
myVarParam = matches && matches[1];
或者,您可以尝试使用匹配的URL获取script
元素并解析出GET参数。
var scriptPath = 'path/to/this/script.js',
matches = $('script[src^="' + scriptPath + '"]').attr('src').match(/\?myVar=([^&]+)/),
myVarParam = matches && matches[1];