Я боролся с вызовами в открытое окно, используя inappbrowser из своего приложения. В основном, я использую phonegap в качестве обертки для загрузки мобильного сайта CMS с специальными функциями приложения.Phonegap Build CLI-5.2.0 Загрузка и закрытие изнутри веб-приложения
Адрес 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) и захватывают браузер. Я хочу открыть их в другом системном браузере (хром, сафари, что угодно). Это позаботится о моей проблеме с загрузкой (поскольку файлы, мы надеемся, откроются в системном браузере, и пользователь сможет выяснить, что с ними делать).
Я попытался добавить прослушиватель событий и выполнить execcript, чтобы вернуть значение 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') не имеет значения, когда вызывается на моем удаленном сайте. Я на правильном пути, используя прослушиватель событий?