Php 如何捕获单击的url?

Php 如何捕获单击的url?,php,javascript,html,Php,Javascript,Html,我有一个服务器,它通过将函数*file\u get\u 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">',

我有一个服务器,它通过将函数*file\u get\u 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>';
$result=file\u get\u contents('http://www.google.com/');
标题('Content-Type:text/html;charset=iso-8859-1');
回声$结果;
回音“,
“Event.observe(document.body,'click',function(Event){”,
“警惕(“嗨”);”,
'});';
但我不知道为什么它不起作用


谢谢你

你应该解除一个点击事件的绑定,这样你的事件就可以开始工作了

<?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>';
?>

更容易理解,但此方法使用JQuery,它通常包含在许多框架或CMSE中

$(function(){
    $('a').click(function(){
        alert(this.href);
    });
});

您需要一个如下所示的脚本:

(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库。

建议使用事件委派:

(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
    }
})();
这样,您只需将一个事件侦听器绑定到一个处理程序,它将处理在页面上任何位置单击的所有链接。如果您只想阻止/处理某些链接,可以给它们一个不同的类,并按如下方式编辑回调函数:

if(target.tagName !== 'A')
//add extra check:
if (target.tagName !== 'A' && target.className !== 'handleThisLinkClass')

google JavaScript事件委托,这是一个非常有用的功能,特别是在处理需要事件处理程序的大量元素集合时

您是否在事件类中包含了JS框架?看起来像是原型JS。如果不包括在内,就没用了。不,我没有。还有其他方法吗?你知道Javascript吗?事件处理?我建议学习,你不懂的复制粘贴代码不会让你走得很远。你为什么这么说?我确实了解它唯一的一点是我不知道原型框架这在IE 9之前的IE中不起作用:事件不会传递到回调,而是保存在全局对象中。IE<9事件对象也没有
target
属性。。。自我调用函数是一个很好的建议,我编辑了我的答案,以备不时之需,Elias。编辑。