Принудительно открыть ссылку в сафари с iOS 11 - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь принудительно открыть ссылку на сафари в iPhone, но я не могу этого сделать.

Итак, мое требование - я использую WebRTC getUserMedia для доступа к видео с камеры iPhone, и с Safari оно работает правильно, но когда я пытаюсь запустить его на Chrome, getUserMedia не за работой. Я пробовал этот пример WebRTC также в Chrome, но он не работает.

Итак, теперь я хочу открыть ссылку, которой всегда можно поделиться по электронной почте с Safari.

Я пробовал эту ссылку, но они не работают -

Принудительная ссылка для открытия в мобильном сафари из веб-приложения с использованием JavaScript

Кроме того, в случае Safari URL Schemes не работали, поэтому не могли использовать это также.

Любые предложения или помощь приветствуются.

1 Ответ

0 голосов
/ 04 июля 2018

Я нашел ответ! Отсюда https://gist.github.com/kylebarrow/1042026

Этот скрипт в голове

<script>
// Mobile Safari in standalone mode
if(("standalone" in window.navigator) && window.navigator.standalone){

    // If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true
    var noddy, remotes = false;

    document.addEventListener('click', function(event) {

        noddy = event.target;

        // Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML
        while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
            noddy = noddy.parentNode;
        }

        if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
        {
            event.preventDefault();
            document.location.href = noddy.href;
        }

    },false);
}
</script>

и стандартный HTML для ссылок

<a href="http://extneral" target="_blank">your link</a>

Таким образом, локальные ссылки под веб-приложениями по-прежнему открываются в том же окне, но внешние ссылки http: // открываются в Safari

...