0

可能重复:
获取执行 JavaScript 文件的 URL(主要是 IE6-7 问题)

嗨,我的页面有这一行:

<script type="text/javascript" src="pixel.js?name=Test&age=21"></script>

我需要 pixel.js 来访问变量名称和年龄,这怎么可能?我尝试使用地址栏变量(获取 POST 数据)方法,但结果未定义,因为我想这在技术上不在地址栏中...

谢谢克雷格

4

4 回答 4

0

我认为只要 pixel.js 是静态文件,您就不能这样做。如果你想做这样的事情,你必须使用一些服务器处理程序来提供 javascript 文件并读取查询字符串参数。

于 2012-06-06T12:31:32.950 回答
0

您是否需要将变量从您的 HTML 页面传递给 JavaScript,或者您在做什么?

如果您真的需要这样做,请查看本教程: http ://feather.elektrum.org/book/src.html

我居然找到了类似的讨论,刷了user378221的回答: Passing parameters to JavaScript files

我建议在单独的脚本标签中声明您的变量,然后包含该文件。

于 2012-06-06T12:32:29.103 回答
0

免责声明:未经测试

只需在脚本元素上放置一个 ID,然后从包含的脚本中获取它(它们存在于同一个 DOM 上,所以它应该可以工作)

HTML:

<script id="blah" type="text/javascript" src="foo.js?key=value" />

foo.js:

console.log(document.getElementById('blah').src);​

​</p>

于 2012-06-06T12:54:53.460 回答
0

你只能通过使用你的文件名找到脚本标签然后解析src属性来做到这一点......像这样:

var scripts = document.getElementsByTagName('script'),
    scriptTest = /^pixel\.js/,
    pixelScript, params,
    getScriptParams = function(scriptSrc){
        var qSplit = scriptSrc.split('?'),
            aSplit = qSplit[1].split('&'),
            retVals = {}, pSplit;

        for (var i = 0, il = aSplit.length; i < il; i++) {
            pSplit = aSplit[i].split('=');
            retVals[pSplit[0]] = pSplit.length > 1 ? pSplit[1] : null;
        }

        return retVals;
    };

for (var i = 0, il = scripts.length; i < il; i++) {
    if (scriptTest.test(scripts[i].src)) {
        pixelScript = scripts[i];
    }
}

params = getScriptParams(pixelScript.src);
于 2012-06-06T12:39:37.920 回答