Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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 从该元素中引用或查找未标识的父元素_Javascript_Get_Src - Fatal编程技术网

Javascript 从该元素中引用或查找未标识的父元素

Javascript 从该元素中引用或查找未标识的父元素,javascript,get,src,Javascript,Get,Src,如果这个问题无法回答,那么我将发布第二个“后退”问题。 我一直在编写javascript jsonp类型的应用程序,其中客户端必须在希望应用程序显示在网页上的任何位置插入一行javascript。到目前为止,它工作得很好,但是现在我想在jssrc属性中添加一个GET变量,这就是当前客户端的页面url 之前: <script id="myScript" type="text/javascript" src="http://www.mydomain.com/scripts/ds.js?cid=

如果这个问题无法回答,那么我将发布第二个“后退”问题。 我一直在编写javascript jsonp类型的应用程序,其中客户端必须在希望应用程序显示在网页上的任何位置插入一行javascript。到目前为止,它工作得很好,但是现在我想在jssrc属性中添加一个GET变量,这就是当前客户端的页面url

之前:

<script id="myScript" type="text/javascript" src="http://www.mydomain.com/scripts/ds.js?cid=00000001&domain=clientdomain.com"></script>

但是现在对于新的扭曲,我想在src中添加页面url作为GET变量,如下所示:

<script id="myScript" type="text/javascript" src="http://www.mydomain.com/scripts/ds.js?cid=00000001&domain=clientdomain.com&page="+document.URL></script>


如果将document.URL放在脚本标记之间,我就可以这样做(但这导致我不得不编写一个稍微大一点、不那么优雅的代码块)。可能标记本身的属性参数中实际上不允许使用javascript。

这样做的通常方法是用javascript构建标记本身。您可以从异步加载中获得额外的好处(尽管如果您不知道如何正确处理异步加载,这可能是一个问题)。例如:

<script>
    (function(d){
        var f=d.createElement('script'),s=d.getElementsByTagName('script')[0];
        f.type='text/javascript';
        f.async=true;
        f.src='http://www.mydomain.com/scripts/ds.js?cid=00000001&domain=clientdomain.com&page='+encodeURI(document.location.href);
        s.parentNode.insertBefore(f,s)
    })(document)
</script>

(职能(d){
var f=d.createElement('script'),s=d.getElementsByTagName('script')[0];
f、 type='text/javascript';
f、 异步=真;
f、 src='1〕http://www.mydomain.com/scripts/ds.js?cid=00000001&domain=clientdomain.com&page='+encodeURI(document.location.href);
s、 parentNode.insertBefore(f,s)
})(文件)

Google Analytics使用类似的代码,所以你有很好的伙伴关系。你说得很对,你不能直接在HTML标记中完成这项工作。

还请注意,我添加了
encodeURI
。如果没有这些,你可能会遇到一些奇怪的问题。嗯……让我试试。当然,这意味着要编写一段代码,而不是插入一个脚本标记。但是,这可能是我所追求的,这是不可能的。是的,谷歌分析、AdSense,甚至类似Facebook的按钮都是“块”,而不是单标签插入。我想我应该向他们学习。我只是想我可以通过进一步减少它来开辟新天地。@GregoryLewis我不会尝试在JavaScript语法中“开辟新天地”。Google开发了一款新的浏览器来开拓新的领域,但他们仍然使用这种方法(主要是因为它不需要修复)。好吧,我认为Dave的回答实际上以一种我没有预料到的方式改进了我所追求的东西(找到一个未知的父节点,并插入其中),抢先回答了我的“回退”问题。所以我要把它标记为“正确答案”。谢谢,戴夫!