innerHTML无法在iPhone上运行

时间:2016-11-17 12:38:01

标签: javascript ios iphone

我在一个神秘的问题上花了几个小时太多时间。我没有通过谷歌找到任何。我想分享一下这个发现。

这是在PC上产生预期结果的代码,但在iPhone上出乎意料:

var input = document.getElementById('input');
var output = document.getElementById('output');
output.innerHTML = parseInt(input.innerHTML);
<div id="input">1233453455</div>
<div id="output"></div>

预期结果:

1233453455
1233453455

iPhone结果:

1233453455
NaN

为什么?

1 个答案:

答案 0 :(得分:1)

iPhone在执行javascript代码之前更改innerHTML内容! “长号”被解释为电话号码(在这种情况下不是),并在innerHTML中添加tel链接。观察alert窗口显示的内容(在iPhone上执行以下脚本):

var input = document.getElementById('input');
var output = document.getElementById('output');
alert('input content: ' + input.innerHTML)
output.innerHTML = parseInt(input.innerHTML);
<div id="input">1233453455</div>
<div id="output"></div>

所以有“意外结果”的原因。

至于解决方案:在我的情况下,我只是为我的文本切换到另一个容器(我使用了data-属性):

var input = document.getElementById('input');
var output = document.getElementById('output');
output.innerHTML = parseInt(input.getAttribute('data-test'));
<div id="input" data-test="1233453455">1233453455</div>
<div id="output"></div>

另一个似乎被描述为here(感谢@epascarello for pointing this out)。但这将禁用您网页上的所有电话号码链接...