можно было бы найти ответ через Chromium как funroll упоминалось, но вот основная идея о том, что происходит, по крайней мере, по моему тестированию.
Строка вводится в «многофункционального поля» определяется быть URL, если он соответствует формату:
[protocol][subdomains].[subdomains].[domain name].[tld]
Где субдомены (которые не являются обязательными, конечно) и доменным имя и содержат только буквы (для Chrome, это, по-видимому, включает буквы с акцентом), цифры, пробелы и дефисы, а домен TLD/верхнего уровня - из утвержденных list-.com, .net и т. д. , если не указан протокол , и в этом случае любой ДВУ считается действительным. Протоколы также поступают из набора списков, но могут быть практически в любом формате с двоеточием после любого количества косых черт. Если протокол не является частью списка, весь URL-адрес рассматривается как поиск.
Если в приведенном выше URL-адресе (например, stackoverflow.com/) есть косая черта после строки, то что-нибудь потом работает.
В качестве альтернативы, если в начале строки появляется косая черта, Chrome рассматривает ее как URL-адрес (с протоколом file://
).
Примеры действительных URL-адреса (в соответствии с Chrome):
- stackoverflow.com
- abc.stackoverflow.com
- abc.abc.abc.abc.stackoverflow .com
- stáckoverflow.com (это изменяет URL-адрес, но разрешено-попробовать!)
- stack-overflow.com
- -stackoverflow.com (не может быть даже юридическим доменным именем, но он работает)
- 4stackoverflow.com
- stackoverflow.com
- stackoverflow.com/not допустимых символов ! @ # $^æ
- [HTTP]: //stackoverflow.com (скобки не законным, но я не могу включить ссылку иначе)
- [HTTP]: //// StackOverflow .com
- [http]: stack overflow.com
- [http]: stackoverflow.mynewtld
Примеры недействительных URL-адресов:
- стек overflow.com
- StackOverflow * .com
- стек/overflow.com
- stackoverflow.mynewtld
И, ну, почти все остальное.
Будем надеяться, что есть библиотека, там где-то, чтобы сделать все это вместо того, чтобы.
[Chromium] (http://www.chromium.org/Home) - с открытым исходным кодом. – funroll
@funroll Я знаю, такой огромный код. Я искал «mobi» в своем коде, не нашел ничего, что захочу. – Gank