通过脚本src属性传递javascript参数

Tin*_*yen 3 javascript

如果我有一个像javascript的src

<script src="http://domain.com/js/script.js"> 
Run Code Online (Sandbox Code Playgroud)

我可以在它的末尾添加更多的值

<script src="http://domain.com/js/script.js?state=1"> 
Run Code Online (Sandbox Code Playgroud)

并在javascript中获取状态?

这个想法来自一种情况,我必须得到客户端解决方案并将其保存到会话但我不能通过PHP,所以我必须通过JavaScript获取它,但我不想显示源代码中的脚本

我认为这是可能的,因为我看到很多消息来源确实有像这样的链接!

dan*_*vis 12

以防万一有人想要实际问题的实际答案,而不是诉诸全局变量和两个脚本标签:

<script src="http://example.com/js/script.js?state=1"></script>
Run Code Online (Sandbox Code Playgroud)

在script.js中:

(function(){
  var myTags = document.getElementsByTagName("script");
  var src = myTags[myTags.length-1].src;
  var state = unescape(src).split("state=")[1].split("&")[0];
  alert(state);
}());
Run Code Online (Sandbox Code Playgroud)

如果你需要传递很多东西,可以使用常见的queryString解析器将脚本的queryString转换为对象.

  • @Cluckles:知道较新的浏览器支持`document.currentScript`属性,这使得函数的"胆量"归结为`state = unescape(document.currentScript.src).split("state =")[1] .split( "&")[0]` (2认同)

bmo*_*ate 4

你就不能做这样的事吗?

<script>
    var state = 1;
</script>
<script src="http://domain.com/js/script.js"> 
Run Code Online (Sandbox Code Playgroud)