Я боролся с вызовами в открытое окно, используя inappbrowser из своего приложения. В основном, я использую phonegap в качестве обертки для загрузки мобильного сайта CMS с специальными функциями приложения.
Вот index.html. Я использую inappbrowser (с местоположением установлено no).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Emerald Test App</title>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width" />
<script src="phonegap.js"></script>
<script type='text/javascript'>
var ref = null;
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
var url = 'https://my-cms-site.com/content.aspx?page_id=31&org_id=1&app=1';
var target = '_blank';
var options = "location=no"
ref = cordova.InAppBrowser.open(url, target, options);
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
То, что я ищу, - это открытые ссылки в системном браузере - с моего внешнего сайта, загруженного через inappbrowser
Я пробовал загружать файлы, используя похожие документы и предложения из сообщений вроде
<script type="text/javascript">
window.open(url, '_system');
</script>
И _blank, добавив "location = no" и т.д., но не кубики. Это внешние страницы, загруженные с моего удаленного сайта.
При нажатии этих ссылок они открываются в том же браузере (inappbrowser или webview) и захватывают браузер. Я хочу открыть их в другом системном браузере (хром, сафари, что угодно). Это позаботится о моей проблеме с загрузкой (поскольку файлы, мы надеемся, откроются в системном браузере, и пользователь сможет выяснить, что с ними делать).
Я попытался добавить прослушиватель событий и executescript, чтобы вернуть значение href. Затем используйте это значение для window.open(href, '_ system'); из index.html(вместо удаленной страницы). Потому что по индексу я все равно буду ссылаться на inappbrowser.
ref.addEventListener( "loadstop", function() {
ref.executeScript(
{ code: "var gbal = null; $('a').on('click', function() { gbal = $(this).attr('href'); }); (function runIt() { return gbal })();" },
function( values ) {
if (values != null) {
//alert( values[ 0 ] );
window.open(values[0],'_system');
}
}
);
});
}
Значения [0] всегда равны нулю. Который, кажется, указывает, что я не делаю что-то правильно в коде: часть executescript - или $(это) на самом деле не эта
Итак, большой вопрос - как я могу открывать ссылки на моем внешнем сайте в системном браузере. window.open('whatever.htm', '_XXXXX') не имеет значения, когда вызывается на моем удаленном сайте. Я нахожусь на правильном пути, используя прослушиватель событий?