【问题标题】:Fetch an html element from external page with javascript使用 javascript 从外部页面获取 html 元素
【发布时间】:2017-09-23 03:19:51
【问题描述】:

我正在尝试在 javascript 中创建一个函数,它将创建一个视频 html 元素,并通过从另一个网页检索源元素来获取源

我已经看到其他问题的答案使用 jquery 或一些 ajax 东西,但没有人真正解释自己,所以我所能做的就是将他们所说的内容复制并粘贴到我的页面中,并得到一个错误,说“$”未定义(如果你不知道,我对 javascript 还是很陌生。还没有使用任何 ajax 或 jquery)。

function loadSource(url){
    var vid = document.getElementById("vid");
    var src = <get source element with id "mp4Source" from the specified url>
    vid.appendChild(src);
}

【问题讨论】:

标签: javascript jquery html ajax


【解决方案1】:

您将$ 设为未定义的原因是您尚未添加 JQuery 库。

有一个很好的问题解释了如何设置here

在您的 JavaScript 之上,您需要包含 JQuery 库。

如何包含 JQuery 库的示例

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

至于加载外部视频元素,您需要向包含该元素的 URL 发出 AJAX 请求。 AJAX 是一种执行异步 HTTP 请求的方法,例如在不刷新网页的情况下向 URL 发出的请求。

如何使用 AJAX 从外部 URL 提取 HTML 的示例

function loadSource(url){
    $.ajax({
        url: "<URL containing the HTML>",
    })
    .done(function(html) {
        $("#vid").append(html); // append the html to the element with the ID 'vid'
    });
}

有关 AJAX 的更多信息,请访问http://api.jquery.com/jquery.ajax/

您还应该了解 JQuery 的基础知识,例如查看 here。如何在您的代码中使用它的一个示例是将 document.getElementById("vid") 替换为 $("#vid")

【讨论】:

  • done函数中,html参数是不是给定的url的整个html?如果是这样,我是否可以像使用当前文档一样专门从中提取一个元素,并提供一个 id?还是我必须使用字符串函数来提取我需要的信息?或者是否可以过滤提供给 ajax 函数的对象中的结果?
  • 是的,html 是一个包含在&lt;URL containing the HTML&gt; 上找到的所有 HTML 的字符串。您可以使用字符串函数来提取特定元素,例如stackoverflow.com/questions/14867835/…。一旦您对 JQuery 有了更多了解,您就可以使用 $("#vid").closest("&lt;selector&gt;") 之类的东西。但这超出了这个问题的范围。
  • 所以现在我已经将 jquery src 添加到我的脚本标签中,我收到错误说我的其他函数没有定义。如果我尝试将其分解为 2 个脚本标签,1 个用于我的所有其他函数,1 个用于 jquery,我将无法再引用 jquery 函数。
  • 如果没有来自控制台的代码和完整的错误消息,我将无法提供帮助。引用 JQuery 库的脚本标记应该是独立的并且位于您的代码之上。您的代码应该包含在另一组脚本标签中。
  • 错误是一个未捕获的 ReferenceError 说“未定义加载页面”。只是为了简化我切换到新 html 页面的所有内容,我只是让函数将检索到的 html 写入控制台。这是代码pastebin.com/iDb608uL
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 2017-09-07
  • 2016-02-25
  • 2016-03-09
  • 1970-01-01
  • 2019-03-06
  • 2020-02-15
  • 2012-01-10
相关资源
最近更新 更多