首页 文章

从具有插件访问权限的phonegap Cordova中的外部URL加载Webste

提问于
浏览
0

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

那么如何从插件访问的cordova加载外部网址的网站?

编辑1:我现在正试图在Android Cordova中提供assets文件夹的url . 但出现以下错误 .

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

3 回答

  • 1

    您可以使用AJAX请求加载页面 . 试试这个article

    /**
     * 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");
    }
    
  • 2

    @Emanuele Spatola的答案似乎是唯一的工作方法 .

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

    <content src="index.html" />
    

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

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

    虽然现在还有一个额外的工作,加载远程.html文件中存在的所有脚本文件,可以使用Jquery的getscript()方法 .

  • 0

    除了接受的答案之外,当涉及使用xmlHttpRequest或任何其他XSS / Ajax调用的结果来操作DOM时,接受的答案将执行该作业,直到外部内容包含应在DOM更新后运行的脚本或标记 . 因此:

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

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

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

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

相关问题