我正在使用一个已经在超链接上定义onclick事件处理程序的库,例如:
<a onclick="$('#myDiv').load('/?__=634285190817664832&sort=Id&sortdir=ASC&page=1 #myDiv');" href="#">1</a>
如何获取'url'参数的值?
答案 0 :(得分:1)
...在tobyodavies指出(以最好的方式)我很厚。如果显式检索属性而不是反射属性,我们将从DOM中获取字符串,而不是函数,因此不必担心函数反编译(请参阅下面的注释) )。下面的其余部分有点偏执(因为我最初是从函数反编译),但仍然:
jQuery(function($) {
var link, onclick, url, index;
link = $('#theLink')[0];
// IMPORTANT: Getting the *attribute* here, not the reflected property.
// jQuery's `attr` function will give you the property, so go direct.
onclick = link.getAttribute("onclick");
display("onclick = " + onclick);
index = onclick.indexOf("load('");
if (index < 0) {
url = "(unknown)";
}
else {
url = onclick.substring(index + 6);
index = url.indexOf("');");
if (index > 0) {
url = url.substring(0, index);
}
}
display("url = " + url);
function display(msg) {
$("<p/>").html(msg).appendTo(document.body);
}
});
请注意这里有龙。在您在DOM中访问它时onclick
反射属性的值是大多数浏览器上的一个函数对象,因此您必须使用从未标准化的Function#toString
已知一些移动浏览器只返回“[object Function]”。大多数桌面浏览器返回事件处理程序的反编译版本,但可以随时更改。
但是现在你已经知道了龙,你可以这样做。这是一种有点偏执的方法:
jQuery(function($) {
var link, onclick, url, index;
link = $('#theLink')[0];
onclick = "" + link.onclick;
display("onclick = " + onclick);
index = onclick.indexOf("load('");
if (index < 0) {
url = "(unknown)";
}
else {
url = onclick.substring(index + 6);
index = url.indexOf("');");
if (index > 0) {
url = url.substring(0, index);
}
}
display("url = " + url);
function display(msg) {
$("<p/>").html(msg).appendTo(document.body);
}
});
答案 1 :(得分:0)
试试这个:
<a href="http://google.de" onclick="alert(this.href);">Link</a>
或者你是说这个意思?
$(function() {
var a = $('#link').attr('onclick');
var l = (a+"").split("'");
alert(l[3]);
});
您也可以替换“$”对象(注意!这是解决方案在chome中工作,但我没有做太多测试......)
$(function() {
var a = $('#link').attr('onclick');
var temp = $;
// Override jQuery
$ = function (t) {
var s = new Object;
s.load = function(url) { alert(url); };
return s
}
a();
// ...and back again
$ = temp;
// Is jQuery still working?
alert($('#link').text());
});
答案 2 :(得分:0)
尝试使用属性节点获取未解析的版本,然后使用正则表达式提取URL。
link.attributes.getNamedItem('onclick').value.match(/someRegex/)