Windows Phone IE Mobile - 如何禁用自动创建网址(地址和电话号码)?

5

Windows Phone 7/8会将地图链接和电话号码链接注入到页面DOM中。这些注入的链接还会改变DOM:它会将原始HTML文档中的空格转换为&ampnbsp,将换行符转换为<br>标签,然后将它们包装在锚点中。当检测地址时,浏览器似乎也有误报,它会将无序列表中的元素转换为地图链接。

如果可能的话,我想完全禁用此功能。

示例HTML:

<!doctype html>
<html>
<head>
    <!--<meta name="format-detection" content="none"/>-->
    <!--<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1">-->

    <!--<script type="text/javascript">-->
        <!--document.execCommand('AutoUrlDetect', false, false);-->
    <!--</script>-->
</head>
<body>
    <div>
        <p>
            9380 W. Glendale Ave.<br />
            Glendale,&nbsp;AZ&nbsp;85305-9400
        </p>

        <!--<p x-ms-format-detection="none">-->
        <p>
            623-872-6700
        </p>
    </div>

    <ul>
         <li>Quicker Checkout</li>
         <li>Order History/Track Your Order</li>
         <li>Create an Address Book</li>
         <li>Manage CLUB/Credit Cards</li>
         <li>Create a Wish List</li>
         <li>Write Customer Product Reviews</li>
         <li>Access Your Account Anywhere</li>
    </ul>
</body>
</html>

这段代码将产生以下输出: 输出图片
页面添加了以下链接:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="maps:9380%20W.%20Glendale%20Ave.%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Glendale,%20AZ%2085305-9400">9380 W. Glendale Ave.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Glendale,&nbsp;AZ&nbsp;85305-9400</a>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="tel:6238726700">623-872-6700</a>

正如您所看到的,它将原始的HTML中的空格转换为&nbsp;。很难看到,但它也从\n中添加了额外的<br>。

我不能简单地从源代码中删除空格和\n,因为这些数据大部分是管理内容,被许多设备和非移动站点使用。

目前我已经尝试了许多不同的组合。

<meta name="format-detection" content="none"/>
<meta name="format-detection" content="telephone=no"/>
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1"> <- and many combinations
document.execCommand('AutoUrlDetect', false, false);
<p x-ms-format-detection="none">

我尝试使用JS变异事件来检测更改,但是当浏览器进行这些更改时,似乎没有发送任何事件。

3个回答

3
将地址周围的 <p>...</p> 替换为每行周围的 <div>...</div> 可以消除空格问题,但这也会破坏地址解析器,使其无法将地址链接到地图。不幸的是,添加微格式对于恢复位置检测没有任何帮助,但此代码片段没有链接的空格问题。
<div class="vcard">
    <div class="n">Mystery Guest</div>
    <div class="addr">9380 W. Glendale Ave.</div>
    <div><span class="locality">Glendale</span>, <span class="region">AZ</span> <span class="postal-code">85305-9400</span></div>

    <div class="tel">623-872-6700</div>
</div>

我的猜测是将地址分成不同的块级元素会使地址解析器发生故障,而让你可以继续前进。
这已在Lumia 521上进行了测试。

1

好的,这里在stackoverflow上已经有另一个人问过同样的问题,但是没有好的答案建议,唯一的答案是使用php中的imageGD生成图像而不是普通文本,显然很难像周围的文本一样整洁地进行样式设置。

因此,由于我没有IE10移动设备,让我分享一下我发现的一些想法:

  • 没有官方方法可以简单地使用javascript/meta标签或任何类似的方法禁用它。
  • 尽管你指出你无法控制数据,但你可以构建自己的地址识别器(在服务器端,这可能比客户端容易,因为在客户端上,您必须循环遍历所有元素并使用一些正则表达式进行验证),并将看起来像地址的东西替换为
    • 奇怪的DOM标记,如尝试插入带有文本的不可见DOM元素
    • 只有文本元素的内联SVG,我非常确定不会被识别,或者在最坏的情况下是画布元素。
无论如何,承认Windows Phone和IE10移动版都是正在开发中的产品是好的。并不是说iOS和Android没有它们自己的问题,但选择Windows Phone的用户通常意识到很多东西不会工作,并且他们正在使用市场份额相对较小的相当“实验性”的设备(那些在撰写时没有意识到这一点的人往往会交换他们的设备),因此决定不支持或最小限度地支持Windows Phone设备总体上是一个相当明智的选择。我知道这不是你想要的答案,但我认为这是一个值得添加的好事。

0
根据这篇文章,您可以使用<pre>标签来禁用此功能(如果您对格式化没有问题的话)。

很遗憾,该内容需要保留格式。 - bheads

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接