【问题标题】:Get website's source code (content) from Cordova从 Cordova 获取网站的源代码(内容)
【发布时间】:2018-01-29 18:48:31
【问题描述】:

当我遇到一个小问题时,我正在创建一个 cordova 混合应用程序:我需要从应用程序的外部网站获取内容。

为了更清楚,我将详细解释:我有一个cordova应用程序,我需要获取外部网站源代码并将其输出到div标签内:完全一样PHP 的file_get_contents.

我使用该代码通过 jQuery(我不想使用它)实现了这一点:

var request = $.ajax({
    url: 'http://www.example.com/',
    type: 'GET',
    crossDomain: true,
    async:false,
    success: function(res) {
        var el = document.createElement('html');
        el.innerHTML = res;
        document.getElementById("anID").innerHTML = el;
    }
});

但有几个原因我不想使用该解决方案:

  1. 内容显示时间过长
  2. 有时会导致应用崩溃

所以我的问题是:这能以更有效的方式进行吗?也许使用在后台加载内容的插件可以解决这个问题?我需要将 JS 应用于此内容,因此我不想使用 iframe 或 inAppBrowser

在 Google 和 StackOverflow 上搜索一无所获后,我问了这个问题


更新:

我发现了这个发出 HTTP 请求的插件,但我不确定如何在这种情况下使用它:https://github.com/wymsee/cordova-HTTP

我正在使用这段代码,但它什么也没做:

document.addEventListener("deviceready", function() {
    window.cordovaHTTP.get("http://www.lycee-tripoli.edu.lb/",
    {},
    {},
    function(response) {
        alert(response.status);
    },
    function(response) {
        alert(response.error);
    });
}, false);

这段代码应该提醒响应,我从 README.md 文件中复制了它。它实际上完全什么都不做,甚至没有错误。我是不是做错了什么?

感谢您的帮助!

【问题讨论】:

  • 只能提取一部分,网站的网站服务必须允许get方法。如果要打开整个检查可以使用inappbrowser cordova.apache.org/docs/en/latest/reference/…
  • 不想使用inAppBrowser,正如我在帖子中提到的那样。你知道有什么插件可以做到这一点吗?

标签: cordova http httprequest cordova-plugins http-get


【解决方案1】:

这里有一点修改——但我不建议这样做——:

var request = $.ajax({
  url: 'https://microsmsm.com/',
  type: 'GET',
  crossDomain: true,
  async: true,
  success: function(res) {
    $("html").html(res);
    //do modifications to html here
  }
});

【讨论】:

  • 我想使用我在帖子中提到的 jQuery。你知道有什么插件可以有效地做到这一点吗?
【解决方案2】:

您可以在原版 Javascript 中做到这一点:

const changeHTMLContent = () => {
    const url = "https://microsmsm.com"
    const xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            console.log(xhr.responseText)
            document.open();
            document.write(xhr.responseText)
            document.close();
        }
    }
    xhr.send();
}

changeHTMLContent();

【讨论】:

  • 这不会花费与 jQuery 相同的时间吗?我想要在没有 JS 或 jQuery 的情况下在后台制作的东西。插件是用 Java 制作的,肯定会更快。
  • 不,它们几乎是相同的技术!
  • 对不起,你没有。我正在寻找一个更快的解决方案。如果它不能让它更快,那么使用纯 JS 的意义何在?
  • 看起来不错,但我仍然想要一个可以在后台和 Java 中完成的插件解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2012-11-28
  • 2023-02-14
  • 1970-01-01
  • 2013-04-21
相关资源
最近更新 更多