Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中是否有与PHP中的_文件_变量类似的内容?_Javascript_Variables - Fatal编程技术网

Javascript中是否有与PHP中的_文件_变量类似的内容?

Javascript中是否有与PHP中的_文件_变量类似的内容?,javascript,variables,Javascript,Variables,非常简单,我有一个JS脚本,它包含在许多不同的站点上,需要将参数传递给它 如果这些信息可以通过URL传递,则会很有用,例如: <script type="text/javascript" src="http://path.to/script.js?var1=something&var2=somethingelse"></script> 是的,您仍然可以在单独的脚本标记中预填充变量,但它有点凌乱,不太容易传递: <script type="te

非常简单,我有一个JS脚本,它包含在许多不同的站点上,需要将参数传递给它

如果这些信息可以通过URL传递,则会很有用,例如:

<script type="text/javascript" 
    src="http://path.to/script.js?var1=something&var2=somethingelse"></script>

是的,您仍然可以在单独的脚本标记中预填充变量,但它有点凌乱,不太容易传递:

<script type="text/javascript">var1=something; var2=somethingelse</script>
<script type="text/javascript" src="http://path.to/script.js"></script>
var1=something;var2=某物

为了完成类似的操作,您需要使用服务器端语言为您呈现JS


我不建议这样做。

只有当变量确定加载了什么JavaScript代码时(例如,通过PHP处理请求,动态构建JS文件),才应使用此方法


如果要将信息传递给JavaScript代码,请在加载后在代码中使用函数或变量。

错误。fileName
将告诉您脚本来自哪个文件(不确定它是否在每个浏览器中都能工作;我已经在Firefox和Opera中对其进行了测试)


是的。额外的好处:我将查询字符串参数转换为更可用的javascript哈希

HTML:


这真的很接近,考虑到IE。。。嗯,也就是说,我90%确定有一种特定于浏览器的方法与此等效。这是一种非常好的方法,但它需要通过完整的DOM进行假脱机,这可能不可靠。@Paul:这里没有假脱机。不必“完成”DOM即可使
文档.getElementsByTagName
正常工作。如何使用
异步
/
延迟
属性?
scriptSource()
函数是这样写的吗?
var filename = (new Error).fileName;
<script src="script.js?var1=something&var2=somethingelse" type="text/javascript"></script>
var scriptSource = (function() {
    var scripts = document.getElementsByTagName('script');
    return scripts[scripts.length - 1].src
}());

var params = parseQueryString(scriptSource.split('?')[1]);

params.var1; // 'something'
params.var2; // 'somethingelse'

// Utility function to convert "a=b&c=d" into { a:'b', c:'d' }
function parseQueryString(queryString) {
    var params = {};
    if (queryString) {
        var keyValues = queryString.split('&');
        for (var i=0; i < keyValues.length; i++) {
            var pair = keyValues[i].split('=');
            params[pair[0]] = pair[1];
        }
    }
    return params;
}