Javascript通过HTTP GET请求参数

时间:2015-10-30 05:34:13

标签: javascript html browser

我在MathJax中看到它们包含这样的脚本。

config

有没有办法在javascript中获取javac YourPathToFile\yourClass.java java YourPathToFile\yourClass pause; 参数?

3 个答案:

答案 0 :(得分:1)

获取该URL的唯一方法是搜索当前文档并找到该特定Dim Job_ID As Integer = int.Parse(lbljob_id.Text.Trim()) 标记,然后从脚本标记中获取<script>属性,然后解析它以获取配置参数。

脚本被加载到全局浏览器命名空间中,并且没有任何特定脚本所特有的属性或变量。你可以使用这样的东西:

.src

然后,您可以使用该泛型函数来查找您的特定标记并解析出配置值,如下所示:

function findScript(tagToMatch) {
    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
        if (scripts[i].src.indexOf(tagToMatch) !== -1) {
            // scripts[i].src is the full URL
            return scripts[i].src;
        }
    }
}

而且,这是一个工作片段:

&#13;
&#13;
function findConfig() {
    var url = findScript("/MathJax.js?"), matches;
    if (url) {
        matches = url.match(/[&?]config=([^&$]+)/);
        if (matches) {
            return matches[1];
        }
    }
    return null;
}

var cfg = findConfig();
&#13;
function findScript(tagToMatch) {
    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
        if (scripts[i].src.indexOf(tagToMatch) !== -1) {
            // scripts[i].src is the full URL
            return scripts[i].src;
        }
    }
}

function findConfig() {
    var url = findScript("/MathJax.js?"), matches;
    if (url) {
        matches = url.match(/[&?]config=([^&$]+)/);
        if (matches) {
            return matches[1];
        }
    }
    return null;
}

document.write(findConfig());
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用正则表达式和plain-old-javascript来提取config参数,但如果您使用jQuery,则可以使用更优雅的方法来隔离所需的元素。

function extractMathJaxConfig() {
    var scripts = document.getElementsByTagName("script")
    var regex = /config=([^&]+)/
    for (var i = 0; i < scripts.length; ++i) {
        var src = scripts[i].src;
        if (src.indexOf("MathJax.js") != -1) {
            var results = regex.exec(src);
            if (results) return results[1];
        }
    }
}

console.log(extractMathJaxConfig());

JSFiddle:https://jsfiddle.net/vdqvjnbw/

答案 2 :(得分:0)

您不会通过您在脚本标记中请求的脚本获取该参数,原因如下:

在浏览器将这些字节拉入页面之前,JS代码的二进制表示不会加载到内存中。这意味着,JS基本上只是服务器上的文本文件,直到它被浏览器下载并解释;在那之前,JavaScript没有任何行为。

但是,在页面内部 - 如果您要从脚本标记的src属性中删除该查询参数 - 您可以执行以下操作:

function getURIComponents(uri) {
    var a = document.createElement('a');
    a.href = uri;
    return {
        origin: a.origin,
        search: a.search
    };
}

function getParams(uri) {
    var c = getURIComponents(uri);
    var pairs = c.search.split('?')[1].split('&');
    var params = {};

    for (var i = 0, len = pairs.length; i < len; i++) {
        var pair = pairs[i].split('=');
        var name = pair[0];
        var value = pair[1];
        params[name] = value;
    }

    return params;
}

getParams(document.getElementByTagName('script').src);

这个[未经测试的]代码应该为您提供一个包含密钥config的对象,其中包含为其设置的值。

希望这有帮助。