我有一个服务器通过将函数* file_get_contents *的结果回显到URL来加载html页面。我希望在此之后获取用户点击的URL。我试过了:
$result = file_get_contents('http://www.google.com/');
header('Content-Type: text/html; charset=iso-8859-1');
echo $result;
echo '<script type="text/javascript">',
"Event.observe(document.body, 'click', function(event) {",
'alert("hi");',
'});</script>';
但我不知道为什么它不起作用!
谢谢
答案 0 :(得分:7)
您需要一个如下所示的脚本:
(function() {
function onclick(event) {
event = event || window.event;
var target = event.target || event.srcElement;
if (target.tagName && target.tagName.toLowerCase() === 'a') {
alert(target.href);
}
}
if (document.body.addEventListener) {
document.body.addEventListener('click', onclick, false);
} else if (document.body.attachEvent) {
document.body.attachEvent('onclick', onclick);
}
})();
这将在IE和其他浏览器中使用,而不使用任何JS库。
答案 1 :(得分:3)
使用事件委派的建议:
(function()
{
function callback(e)//IE doesn't pass event object, but we'll fix that
{
var target;
e = e || window.event;//get IE event
target = e.target || e.srcElement;//IE again
if (target.tagName !== 'A')
{
return true;
}
//a link has been clicked, target holds a reference to that link, e is the click event
alert(target.href);
//to prevent the link to be followed:
if (e.preventDefault)
{// all major browsers, except for ie
e.preventDefault();
e.stopPropagation();
return false;
}//now IE again:
e.returnValue = false;
e.cancelBubble = true;
return false;//not required to return here
}
if (document.body.addEventListener)
{
document.body.addEventListener('click',callback,false);
}
else
{
document.body.attachEvent('onclick',callback);//for IE > 9
}
})();
这样,您只需将1个事件侦听器绑定到1个处理程序,它就会处理在页面上任意位置单击的所有链接。如果你只想阻止/处理某些链接,你可以给它们一个不同的类,并像这样编辑回调函数:
if(target.tagName !== 'A')
//add extra check:
if (target.tagName !== 'A' && target.className !== 'handleThisLinkClass')
google JavaScript事件委派,这是一个非常有用的功能,特别是在处理需要事件处理程序的大量元素时
答案 2 :(得分:1)
更容易理解,但此方法使用JQuery,它通常包含在许多框架或cmses中。
$(function(){
$('a').click(function(){
alert(this.href);
});
});
答案 3 :(得分:0)
您应取消绑定点击事件,以便您的活动开始有效。
<?php
$result = file_get_contents('http://www.google.com/');
header('Content-Type: text/html; charset=iso-8859-1');
echo $result;
echo '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>';
echo '
<script type="text/javascript">
$(document).ready(function(){
$(document).unbind("click").click(function(){ alert("Hi!"); });
// similarly
$("a").unbind("click").click(function(){ alert($(this).attr("href")); return false; });
});
</script>';
?>