Completely prevent iOS web app from opening link i

2019-08-07 09:49发布

问题:

I have found multiple solutions to prevent an iOS web app from opening normal links in mobile Safari, unfortunately they do not work for links containing parameters, e.g.

href="index.php?s=example"

These are still opened in mobile Safari.

The shortest solution for normal links I have found thus far can be found here at stackoverflow. Maybe someone can modify that script?

回答1:

Try 4 years old github gist. I used it and it works. You can use it by bower:

bower install --save iosweblinks

May be you have javascript errors on page and handlers do not call?

P.S. My modified script for prevent opening links in Safari in standalone mode:

(function (standalone) {

    if (!standalone) {
        return;
    }

    document.addEventListener('click', function (e) {
        var element = e.target,
            href = '';

        while (!/^(a|html)$/i.test(element.nodeName)) {
            element = element.parentNode;
        }

        if (element.getAttribute) {
            href = element.getAttribute('href');

            if ('' !== href && '#' !== href && null !== href && (!element.protocol || element.protocol !== 'tel:')) {
                e.preventDefault();
                window.location = element.href;
            }
        }
    }, false);

}(window.navigator.standalone));