getelementById('...')。点击在Chrome中不起作用

时间:2012-04-06 09:08:10

标签: javascript google-chrome getelementbyid

  

可能重复:
  innerDocument.getElementById(<elment ID>).click(); doesn't work in Firefox/chrome, in IE it works

我有一个标签式的html页面。

                <ul class="tabs">
                    <li><a href="#tab1" id='accomodation'>Accomodation</a></li>
                    <li><a href="#tab2" id='relaxation'>Relaxation</a></li>
                    <li><a href="#tab3" id='recreation'>Recreation</a></li>
                  </ul>

我来自另一个带点击的HTML,我想显示我之前点击的标签(我将其存储在cookie中)。

因此,我为选项卡添加了ID,当此页面加载时,我调用一个从cookie中读取ID的函数,然后单击关于选项卡。该页面加载时会运行该函数:

<body onLoad="where_from();">

这是功能:

function where_from()
{
    if (readCookie('came_from')!="false")
    {
        pos=readCookie('came_from');
        if (pos=='relaxation')
            document.getElementById('relaxation').click();

        if (pos=='recreation')
            document.getElementById('recreation').click();
}

}

它在IE和Firefox中运行良好,但在Chrome中没有任何反应

任何人都可以帮助解决问题吗?

我觉得getelementById.click调用有问题,但我找不到这里描述的任何解决方案。

请帮助!!

3 个答案:

答案 0 :(得分:2)

Chrome不支持click()元素。您可以像这样实现它:

if( !document.body.click) {
    HTMLElement.prototype.click = function() {
        var t = this;
        do {
            if( t.onclick) t.onclick();
            t = t.parentNode;
        } while (t);
    }
}

这只是一个近似值,因为它无法正确处理Event对象,但在大多数情况下,这应该可以很好地工作。

答案 1 :(得分:0)

我认为您不需要点击标签链接来更改页面。

你可以使用document.location.href

来完成
function where_from()
{
    if (readCookie('came_from')!="false")
    {
        pos=readCookie('came_from');
        if (pos=='relaxation')
            document.location.href = document.getElementById('relaxation').href;

        if (pos=='recreation')
            document.location.href = document.getElementById('recreation').href;
     }
}

here is a jsfiddle example,已从here复制。

答案 2 :(得分:0)

如果document.getElementById('relaxation').click();不起作用,这可能适用于您:$('#relaxation').click();

例如:

$('#relaxation').click(function(){

//Onclick do something

});

要下载Jquery支持文件,请访问:http://jquery.com/