Разработка сайта только для iPad - принудительно открывать все ссылки в режиме приложения

Я создаю небольшой сайт, который всегда будет просматриваться на iPad, я использую метатег:

<meta name="apple-mobile-web-app-capable" content="yes">

И добавление сайта на домашнюю страницу, чтобы заставить iPad воспринимать его как приложение. Это устраняет адресную строку и кнопки возврата и т. Д.

У меня есть сайт внутри набора фреймов, изначально сайт будет загружаться index.htm целевая страница с ссылками на другие страницы, содержащие <frameset>и <frame>"S. На каждой странице есть рамка навигации и рамка для отображения контента. Содержимое второго фрейма будет внешней веб-страницей.

У меня была проблема, когда запуск сайта в режиме приложения и нажатие на ссылки на целевой странице приводили к открытию нового окна в Safari - по сути, оно выходило бы из контекста приложения и загружало Safari, я решил это с помощью:

<script type="text/javascript">
    $(document).ready(function () {
        $('a').click(function (e) {
            window.location = $(this).attr('href');
            e.preventDefault();
        });
    });
</script>

Который сохраняет все ссылки на моем сайте загруженными в "приложение".

Теперь вот проблема.

Фреймы, которые загружают внешние веб-страницы, очевидно, будут содержать ссылки, при щелчке по этим ссылкам в фрейме это запускает сафари и выходит из контекста приложения, и приложение возвращается к поведению, как и раньше.

Есть ли способ убедиться, что все ссылки на сайте открыты в "приложении", даже те, которые содержатся в <frame> элементы?

Общая цель здесь состоит в том, чтобы не дать пользователю выйти из приложения и сделать все, что ему нравится в сети.

1 ответ

Я знаю, что вы заявляете, что это веб-сайт, но кажется, что вы делаете что-то похожее на приложение, и я испытываю желание предложить использовать пробел. http://phonegap.com/

Причина в том, что вы не сможете предотвратить открытие ссылок в сафари. Несмотря на то, что Brainfeeder предлагает хорошие варианты загрузки внешнего html в div, но я думаю, что у вас все еще будет та же проблема, когда пользователи нажимают на ссылки с внешних сайтов внутри этого div.

С помощью phonegap все, что вам нужно сделать, - это создать новый проект, скопировать ваш код в папку www и сразу же получить приложение, которое вы сможете развернуть на своем iPad.

Но главное, что заставило меня предположить, что это функция inAppBrowser, которая позволит вам указать ссылки, которые будут открываться в веб-обзоре переднего плана, так что, когда пользователь завершит просмотр, он просто нажмет кнопку "Готово" и вернется в ваше приложение. http://docs.phonegap.com/en/3.0.0/cordova_inappbrowser_inappbrowser.md.html

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

Другие вопросы по тегам