window.location.href = aa.href不能取得吗?

解决方案 »

  1.   

    可以用 window.location = aa.href 来实现,但是这样server.php就无法取得$_SERVER['HTTP_REFERER']了
      

  2.   

    <BODY>
    <form   method="POST"   action="http://www.g.cn"   name="postform">             
    </form>
    <a href="#" id="aa" onclick="jump();">CSDN</a><script>
     function jump() {
        setTimeout("document.postform.submit();", 2000);
    }
    </script></BODY>
      

  3.   

    TO rjzou2006: 两个字"聪明"TO showbo: 可能不能保存,但是希望有办法保存~ 没找到相关说法 ;-(TO xiaolei1982: 可行,但是这样服务器端处理起来就不那么自然了
    谢谢大家, 希望还能有更好的解决办法!
      

  4.   

    function sleep(nSecond)
    {
    var oldTime = new Date();
    while(1){
    var newTime = new Date();
    if((newTime.getTime()-oldTime.getTime())>=nSecond *1000);
    break;
    }
    }
    用这个看看
      

  5.   

    to cloudgamer:服你了, 这种损招也能想得出来, 我担心我的CPU?
      

  6.   

    非常规写法:
    <a href="#" url="server.php" id="aa">CSDN</a><script language="javascript">
    document.getElementById('aa').onclick = function(){
    setTimeout("location.href = this.url",   2000); 
    };
    </script>
      

  7.   

    楼上请看清我的题目://这里可以用 window.location = aa.href 来实现,但是这样server.php就无法取得$_SERVER['HTTP_REFERER']了
      

  8.   

    根据rjzou2006的改一下:<a href="server.php" onclick="var o=document.createElement('form');o.action=this.href;o.method='post';window.setTimeout(function(){document.body.appendChild(o);o.submit();},2000);return false;">CSDN</a>
      

  9.   

    location.href 
    location.replace() 
    这些肯定不行,要保留 HTTP_REFERER ,还要不直接用链接的方式,表单是最好的方法本想这两个是不是能做些手脚,但似乎和你的要求差得很远...window.onbeforeunloadwindow.onunload另外这里好像和cloudgamer 说的比较相似,但是这里执行顺序是个问题。
    http://topic.csdn.net/t/20060303/22/4591744.html做等高手来~~~
      

  10.   

    呵呵,楼上好几位熟人!延时点击当然用setTimeout和click,关键是加个标志位!lz看看满意不?!L@_@K
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>dhtml.hyperlink.setTimeoutClick.html</title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="Gao YiXiang" />
        <meta name="email" content="[email protected]" />
        <meta name="keywords" content="javascript dhtml dom" />
        <meta name="description" content="I love web development." />
    </head>
    <body>
    <a href="http://passport.csdn.net/UserLogin.aspx" id="hlkCsdn">CSDN</a><script type="text/javascript">
    <!--
    var myLink = document.getElementById('hlkCsdn');
    var hasClicked = false;
    var iMilliseconds = 2000;
    myLink.onclick = function()
    {
        if (!hasClicked)
        {
            hasClicked = true;
            setTimeout(clickCsdn, iMilliseconds);
            event.returnValue = false;
        }
    };
    function clickCsdn()
    {
        myLink.click();
    }
    //-->
    </script></body>
    </html>
      

  11.   


    <script>
    document.getElementById('aa').onclick = function() {
        var e = event;    e.returnValue = false;
        setTimeout(function(){
            //其实是变量作用域问题,你这个event的局部变量
             //这个onclick的function执行完毕的时候,event会被销毁
            //2秒钟后就没有这个event了,对象都不存在,所以会错误
            //yixianggao 兄台写的就可以,他用的是2秒后执行myLink这个对象的click,而myLink这个全局变量,并没有销毁,所以会起作用
            //yixianggao 兄台写的 里面要特别注意 hasClicked这个变量,当第一次点击的时候这个false,执行 setTimeout,当setTimeout
            //设置的到时间的时候执行 click(),这个时候hasClicked是true就开始跳转,如果没有这个hasClicked,
            //当setTimeout设置的到时间的时候执行 click(),就再次设置了setTimeout,而不是跳转
            e.returnValue = true;
        }, 2000);
    };
    </script>
      

  12.   

    感谢:fredyj, 用JS很好的模拟sleep功能很难, 但是我正打算用异步加载的方式试试TO yixianggao: 你的方法我也想过了,自动点击效果在firefox里是不支持的, 而且你用if(!hasClicked)判断如果多次点击时会存在问题的
      

  13.   

    To lz看来又是兼容性滴问题,俺上网用TT(其实是IE内核),图标和FF很像,哈至于lz所说滴问题:1 自动点击效果在firefox里是不支持的?
    俺查了dhtml手册,click方法是标准dom方法,并非ms扩展方法。
    FF不支持标准,无语...
    click Method
    Simulates a click by causing the onclick event to fire.Standards Information
    This method is defined in World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1.
    2 你用if(!hasClicked)判断如果多次点击时会存在问题的?
    的确,一个标志位很难判断,而且lz一开始也没提到多次点击问题!
    不过只要增加autoClick标志位在IE6sp1下就可以搞定多次点击问题。
    L@_@K
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>dhtml.hyperlink.setTimeoutClick.html</title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="Gao YiXiang" />
        <meta name="email" content="[email protected]" />
        <meta name="keywords" content="javascript dhtml dom" />
        <meta name="description" content="I love web development." />
    </head>
    <body>
    <a href="http://www.google.com" id="hlkCsdn">Google</a><script type="text/javascript">
    <!--
    /*
     * NOTE: IE6sp1 下测试可用!
     */
    var myLink = document.getElementById('hlkCsdn');
    var hasClicked = false;
    var autoClick = false;
    var iMilliseconds = 2000;
    myLink.onclick = function()
    {
        event.returnValue = false;    if (!hasClicked)
        {
            hasClicked = true;        setTimeout(clickCsdn, iMilliseconds);
        }
        else if (autoClick)
        {
            event.returnValue = true;
        }
    };
    function clickCsdn()
    {
        autoClick = true;    myLink.click();
    }
    //-->
    </script></body>
    </html>
      

  14.   

    TO yixianggao:
    俺查了dhtml手册,click方法是标准dom方法,并非ms扩展方法。 
    FF不支持标准,无语... 
    -------------无语? 
    你在firefox下测试了吗?
    谁说FF已经支持所有标准的?
    实现与愿望往往相差很远,为何不在firefox下测试一下再下结论?
    兄弟,用实例来说话吧!
    <a href="http://csdn.net" id="aa" onclick="alert('clicked');">CSDN</a><script type="text/javascript">
    function clickABC(el){
    if (navigator.appVersion.match(/\bMSIE\b/)){
    el.click();
    } else {
    var evt = document.createEvent("MouseEvents");
    evt.initEvent("click", true, false);
    el.dispatchEvent(evt);
    }
    }
    clickABC(document.getElementById('aa')); //这里只能触到onclick="alert('clicked')事件,而无法实现自动打开链接
    </script>
      

  15.   

    To lz“看来又是兼容性滴问题”——这是俺在18楼回帖滴第一话,没必要多解释。而且俺在修订的代码中已经注明“NOTE: IE6sp1 下测试可用!”,
    至于FF无法保证。俺又去查了一下,在w3c的dom1和dom2中的HTMLAnchorElement(A element)都只定义了两个方法:blur和focus,
    并未定义click方法。dom1中只在HTMLInputElement上定义了click方法!由此可见,俺被ms滴dhtml手册忽悠了。至于lz滴问题,建议在server端解决。
    Methodsblur 
        Removes keyboard focus from this element. 
        No Parameters
        No Return Value
        No Exceptionsfocus 
        Gives keyboard focus to this element. 
        No Parameters
        No Return Value
        No ExceptionsReferenceDocument Object Model HTML(DOM2)
    HTMLAnchorElement
    http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-48250443DOM1
    http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html
      

  16.   

    TO yixianggao:     对不起,是我小人之心了 *^_^*
         看来最好的方式还是用JS创建form然后再提交
         仍然非常感谢你!~----------
    顺便问下楼上,ATM里取出假钞是亲身经历吗? BS银行! 
      

  17.   

    To lz呵呵,大家都是搞技术滴,把问题弄明白最重要!ATM里取出假钞是亲身经历吗?
    哈,当然是!俺认倒霉了!不过新疆老人比俺幸运多了!ATM机“吐”假就能道歉了事?
    http://www.tianshannet.com.cn/content/2008-01/08/content_2383394.htm