我在 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/