Как запретить браузеру Android открывать карту, если у html есть адрес, даже если якоря нет - PullRequest
2 голосов
/ 19 мая 2011

У меня есть адреса в формате html, но без привязок:

1111 10th Ave., Seattle WA 98112

При нажатии в браузере Android открывается карта.НЕ желаемое поведение.Предотвращение по умолчанию onclick не исправляет это.Предотвращение настройки по умолчанию на сенсорном пуске исправляет это, но затем представление не прокручивается, поскольку прокрутка инициализируется на сенсорном пуске.

Как мне остановить это?

Это происходит в браузере и в пробеле.

Ответы [ 5 ]

4 голосов
/ 09 марта 2012

Добавление этих тегов в <head> должно работать:

<meta name="format-detection" content="telephone=no"/>
<meta name="format-detection" content="address=no" />
1 голос
/ 19 мая 2011

Единственный способ, которым я могу думать об этом, - это изменить отображаемый текст таким образом, чтобы он не соответствовал правилам адресов: следовательно, браузер не будет рассматривать их адреса и не сделает их кликабельными.Правила адреса в настоящее время таковы (взяты из исходного кода WebView по адресу https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/webkit/WebView.java#1718):

/**
 * Gets the first substring consisting of the address of a physical
 * location. Currently, only addresses in the United States are detected,
 * and consist of:
 * <ul>
 *   <li>a house number</li>
 *   <li>a street name</li>
 *   <li>a street type (Road, Circle, etc), either spelled out or
 *       abbreviated</li>
 *   <li>a city name</li>
 *   <li>a state or territory, either spelled out or two-letter abbr</li>
 *   <li>an optional 5 digit or 9 digit zip code</li>
 * </ul>
 * All names must be correctly capitalized, and the zip code, if present,
 * must be valid for the state. The street type must be a standard USPS
 * spelling or abbreviation. The state or territory must also be spelled
 * or abbreviated using USPS standards. The house number may not exceed
 * five digits.
 *
 * @param addr the string to search for addresses
 * @return the address, or if no address is found, null
 */

Не уверен, что вы будете делать: возможно, добавьте дополнительные невидимые символы, чтобы разбить его?

0 голосов
/ 21 января 2012

Должен быть лучший ответ, чем те, которые мы здесь предоставляем. Но у меня была та же проблема, поэтому я просто превратил элемент в гиперссылку, которая нигде не указывала. Таким образом, она переопределяет карту, но никуда не ведет пользователя.

<a href="#">Some button</a>
0 голосов
/ 19 мая 2011

Я уже пытался замаскировать его с помощью элемента html поверх адреса. Нет кости.

Благодаря @Femi я добавил невидимых символов. Это добавляет больше сложности, так как мне придется удалить лишние символы после того, как пользователь нажмет на адрес.

По сути, это представление выбора формы, они выбирают адрес из своего маршрута поездки, чтобы затем использовать его при поиске ресторанов.

Следующий html-пример решает эту проблему:

<div class="content">1111 Webster St. <span style="position: absolute; left: -9999px;">sdfsdfsdfsd</span> San Francisco, CA, 94117</div>

Я не могу поверить, что я должен сделать это в моем JavaScript:

locationString = "<span class='offToLeft'>sdfsdfsdfsd</span>"+locationString;

Boom! Возьми эту карту Android!

0 голосов
/ 19 мая 2011

Вы можете попробовать

  • прозрачный gif или пустой элемент DEV над текстом
  • , предотвращающий onmousedown или onclick, вместо ontouchstart
  • , помещающий скрытый SPANэлемент между городом и штатом с фиктивным текстом в
...