0

可能重复:
innerDocument.getElementById(<elment ID>).click(); 在 Firefox/chrome 中不起作用,在 IE 中它起作用

我有一个选项卡式 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>

我来自另一个带有 click 的 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 调用有问题,但我找不到这里描述的任何解决方案。

请帮忙!!

4

3 回答 3

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 对象,但在大多数情况下,这应该可以很好地工作。

于 2012-04-06T09:14:46.287 回答
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;
     }
}

这是一个 jsfiddle 示例,从这里复制而来。

于 2012-04-06T09:23:54.180 回答
0

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

前任:

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

//Onclick do something

});

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

于 2012-04-06T09:26:06.783 回答