繁体   English   中英

通过插件访问从Phonegap Cordova中的外部URL加载Webste

[英]Load Webste from external URL in phonegap Cordova with plugin access

我希望从Cordova Phonegap项目中的外部URL加载我的应用程序(Android / iOS)的内容。 虽然我可以在应用程序中加载网站,但是没有插件访问权限。 我曾尝试在本地应用程序和网站上托管插件,但是这些方法似乎都不起作用。

那么,如何通过带有插件访问权限的Cordova中的外部URL加载网站?

编辑1:我现在尝试提供Android Cordova中Assets文件夹的URL。 但是出现以下错误。

Error: [Error] initializing Cordova: Class Not Found.

您可以使用AJAX请求加载页面。 尝试关注本文

/**
 * Load page into url
 *
 * @param url           The url to load
 */
function loadPage(url) {
    var xmlhttp = new XMLHttpRequest();

    // Callback function when XMLHttpRequest is ready
    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState === 4){
            if (xmlhttp.status === 200) {
                document.getElementById('container').innerHTML = xmlhttp.responseText;
            }
        }
    };
    xmlhttp.open("GET", url , true);
    xmlhttp.send();
}

并在主文件中

/**
 * Function called when page has finished loading.
 */
function init() {

    // Load first page into container
    loadPage("screen1.html");
}

@Emanuele Spatola的回答似乎是唯一可行的方法。

config.xml不应受到干扰,content-src应该指向index.html。

<content src="index.html" />

项目所需的所有插件都应在应用程序本地安装,并将cordova.js添加到本地index.html。

然后创建一个容器(如div)元素,并进行ajax调用以将html文件加载到其中。

尽管现在有额外的工作来加载远程.html文件中存在的所有脚本文件,但可以使用Jquery的getscript()方法。

除了接受的答案外,当使用xmlHttpRequest或任何其他XSS / Ajax调用的结果来操作DOM时,接受的答案也可以起作用,直到外部内容包含应在DOM更新后运行的脚本或标记为止。 因此:

document.getElementById('container').innerHTML = xmlhttp.responseText;

不适用于包含javascript的页面,因为出于安全原因,在将内容添加到DOM时, .innerHTML函数会将xmlhttp.responseText呈现为纯文本,而html会忽略此处包含的任何标记或脚本; 有关更多信息,请参见https://www.w3.org/TR/2008/WD-html5-20080610/dom.html#innerhtml0
解决此问题的最快方法是使用已经解决了此问题的JQuery .html()函数:

$('#container').html(xmlhttp.responseText);

上面的代码将呈现内容并运行附加到该内容的任何脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM