javascript - 在 tampermonkey 中,变量 urlm 的行为有所不同

标签 javascript jquery html ajax

我在 tampermonkey 中编写了这段代码,

var n = document.getElementsByTagName("a").length;
for (i = 0; i < n; i++) { 
    var urlm = document.getElementsByTagName("a")[i].href;
    //urlm.replace("#", "");
   // var v = "change('"+urlm+"')";
    // document.getElementsByTagName("a")[i].setAttribute("onclick", v);
    document.getElementsByTagName("a")[i].addEventListener('click', function(event){ alert(urlm); ajaxpagefetcher.load("ajax-div",urlm, true); }, false);
    document.getElementsByTagName("a")[i].setAttribute("href", "javascript:alert("+urlm+")");
}

当我执行此代码时,我得到的 urlm 值不同。认为 var urlm = document.getElementsByTagName("a")[i].href; 这里 urlm强文本 返回http://www.example.\com/page/page3.html....

但是,在这一行中addEventListener('click', function(event){alert(urlm); ajaxpagefetcher.load("ajax-div",urlm, true); }, false); alert(urlm); 仅显示 http://www.example.\com/,但此处缺少 page/page3.html。 ...但是在下一行 javascript:alert("+urlm+")"); 它执行为 javascript:alert("http:/www.example.\com/page/page3).请让我知道我做错了什么。

最佳答案

值 urlm 在点击事件之外分配。

请在本次点击事件中加载urlm,即复制点击事件中的行

var urlm = event.target.href;

由于 urlm 是在点击事件之外加载的,因此点击事件发生时 urlm 中的值可能会有所不同。

您的点击事件可能如下所示

 document.getElementsByTagName("a")[i].addEventListener('click', function(event){ var urlm = event.target.href; alert(urlm); ajaxpagefetcher.load("ajax-div",urlm, true); }, false);

关于javascript - 在 tampermonkey 中,变量 urlm 的行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125432/

相关文章:

html - 中心提交按钮与表单框一致

javascript - 参数类型不可分配给类型参数

javascript - forEach循环: Sum multiple values in the same Variable

jquery - 如何在打开图库时不显示第一张图片 - Fancybox 2

javascript - 尝试通过 jQuery ajax 调用加载 Google 图表

javascript - jScrollPane 垂直滚动条不显示

html - 使用 Bootstrap 嵌入 youtube 边缘的黑线

c# - 使用 javascript 防止 gridview 异步回发

javascript - 折叠/展开文本 - 逻辑错误

javascript - 将 immutable.js 与 angularjs 一起使用的影响