5

如果我有一个类似的 javascript src

<script src="http://domain.com/js/script.js"> 

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

<script src="http://domain.com/js/script.js?state=1"> 

并在该javascript中获取状态?

这个想法来自我必须获得客户端分辨率并将其保存到会话但我不能通过 php 获取它的情况,所以我必须通过 javascript 获取它,但我不想显示从源代码中删除的脚本

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

4

3 回答 3

12

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

<script src="http://example.com/js/script.js?state=1"></script>

在 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);
}());

如果您需要传递很多东西,请使用通用 queryString 解析器将脚本的 queryString 转换为对象。

于 2013-07-08T17:49:50.737 回答
4

你不能做这样的事情吗?

<script>
    var state = 1;
</script>
<script src="http://domain.com/js/script.js"> 
于 2013-07-08T16:32:08.540 回答
1

在调用 JS 之前提供变量将起作用。但是如果你不想用 vars 污染 Global,你可以试试 PHP 的方法:

制作一个 PHP 文件,在标头中声明它将是一个 javascript,用变量来做任何你想做的事情,用$_GET值抓取它并输出格式化的 js 文件

<script src="http://domain.com/js/script.php?state=1" />

<?php
// We'll be outputting a JS
header('Content-type: text/javascript');

$phpState = $_GET['state'];
?>

function someCommonJS(){
    var myState = "<?=$phpState;?>"; /*printing php var into js*/
}

<?php
/* some more php*/
?>

/*some more js*/

这样文件就可以随心所欲地出现,if else如果通过 js 完成,用户将无法看到所有可见的文件。

于 2013-07-08T16:38:19.720 回答