Javascript-在iOS Safari中以编程方式单击锚点

Javascript - Programmatically Click Anchor in iOS Safari

本文关键字:方式 单击 编程 iOS Safari Javascript-      更新时间:2023-09-26

我在一个现有的网站上工作,有一些锚标签,比如:

<ul>
    <li><a id="answerswer-1" href="/" rel="0">Answer 1</a></li>
    <li><a id="answerswer-2" href="/" rel="1">Answer 2</a></li>
    <li><a id="answerswer-3" href="/" rel="2">Answer 3</a></li>
    <li><a id="answerswer-4" href="/" rel="3">Answer 4</a></li>
</ul>

我需要根据用户的选择以编程方式单击其中一个锚点。

在桌面上,在IE中,这是有效的:

document.getElementById('answer-1').click();

然而,在iOS safari中不太适用,这会导致弹出窗口:

if (!document.getElementById('answer-1').click) alert ('Oh no!');

据我所知,他们还连接了一些其他的javascript,用来发送rel标记作为答案。有没有其他方法可以在iOS Safari中以编程方式单击锚点?还是我需要深入挖掘他们的javascript,以了解点击锚时调用的是什么?

我也试过这个,但不起作用:

window.location.href = document.getElementById('answer-1').href;

他们一定在某个地方用Javascript做了更多的工作(也许是jquery)。

我已经回答了一个类似的问题,其中需要手动调度点击事件:使用javascript 在移动safari中强制打开链接

您可以将该逻辑应用到代码中。

看起来Mobile Safari不支持点击功能。document.getElementById('swer-1').click返回undefined,这就是您收到警报的原因。尝试使用.trigger()

在我看来,似乎没有办法在移动safari中调用click()

使用Google Chrome中的dev工具栏,我能够计算出当您单击其中一个锚点时调用的javascript函数。

我只需要调用函数就可以得到我需要的东西。

我会等几天来标记答案,因为我仍然想知道移动狩猎中click()的替代方案。

在Snow Leopard或Lion下测试时,我的Mac应用程序也出现了此问题。奇怪的是,它与山狮合作。

我使用jQuery解决了这个问题。

$('#answer-1').click();

如果网站已经加载了jQuery,你也可以试一试!