Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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 将参数从<;添加到URL;a href>;刚刚点击_Javascript - Fatal编程技术网

Javascript 将参数从<;添加到URL;a href>;刚刚点击

Javascript 将参数从<;添加到URL;a href>;刚刚点击,javascript,Javascript,这个场景是大量的html文件,它们之间有更多的链接。当我调用它们中的第一个(它将是索引)时,链接通过URL传递几个参数(我们可以称它们为首选项) 现在我想要的是,当点击页面的任何链接时,这些参数都会被添加。因此,问题与另一个()类似,只是在单击链接之后才执行 我知道一个解决方案可能是更改每个链接上的onclick事件,但由于可能有数千个,没有常规的url格式。。。我正在寻找一个解决方案,可以在脚本的头部;可能是与onbeforeunload事件相关的内容 无论如何,我找不到怎么做。有什么想法吗?

这个场景是大量的html文件,它们之间有更多的链接。当我调用它们中的第一个(它将是索引)时,链接通过URL传递几个参数(我们可以称它们为首选项)

现在我想要的是,当点击页面的任何链接时,这些参数都会被添加。因此,问题与另一个()类似,只是在单击链接之后才执行

我知道一个解决方案可能是更改每个链接上的onclick事件,但由于可能有数千个,没有常规的url格式。。。我正在寻找一个解决方案,可以在脚本的头部;可能是与onbeforeunload事件相关的内容


无论如何,我找不到怎么做。有什么想法吗?

我想一种方法是在页面加载时将clickevent侦听器附加到所有锚元素,而不是更改每个链接的onclick属性,或者使用onbeforeunload事件。然后,回调可以截获浏览器的默认行为以跟踪链接。然后,您可以获取刚刚单击的a元素的
src
属性,将所需的首选项添加到URL,然后通过将
window.location.href
设置为正确的URL,将用户发送到正确的位置(包括首选项)

在MDN上有一个关于事件侦听器的链接,我相信它会对您有所帮助。特别注意关于IE旧版本的部分

这是一个非常粗糙的例子:

function callback(e){
  // Get the src of the clicked a-element
  var src = this.src;
  // Add preferences to the url, this need 
  // improvement depending on your needs
  src += "?somesetting=foo";
  // Send user to the url with preferences
  window.location.href = src;
}

// Get all anchors on page
var anchors = document.getElementsByTagName("a");

// Loop over the elements and attach listener
for(i=0 ; i < anchors.length ; i++){
  // Extend with support for older IE if needed
  anchors[i].addEventListener("click", callback, false});
}​
函数回调(e){
//获取单击的a元素的src
var src=this.src;
//将首选项添加到url,这需要
//根据您的需要进行改进
src+=“?somesetting=foo”;
//将用户发送到带有首选项的url
window.location.href=src;
}
//获取页面上的所有锚
var archors=document.getElementsByTagName(“a”);
//在元素上循环并附加侦听器
对于(i=0;i<0.length;i++){
//如果需要,扩展对旧IE的支持
锚[i].addEventListener(“单击”,回调,false});
}​

这将在单击任何包含href属性的内容时附加一个字符串:

window.addEventListener("click", function(e) {
    var href = e.target.getAttribute("href");
    if(href) {
        location.href = href + "?q=stackoverflow";
        e.preventDefault();
    }
});​
示例如下:


中不起作用,所以这些参数将随每个请求移动?对吧?成功了!非常感谢你。顺便说一句:我正在Android应用程序中使用它,包括PhoneGap。当我在Mozilla Firefox 10.0.7(在Linux上运行)上试用时,它不起作用。我认为src元素是问题所在。这是IE属性,正确的属性是target。由于某种原因,chrome似乎也实现了src元素。我相应地修改了代码。