首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态加载JS动态加载更多JS

动态加载JS动态加载更多JS
EN

Stack Overflow用户
提问于 2016-05-28 03:28:05
回答 1查看 293关注 0票数 0

请在说“使用$.getScript(fileURL)$('body').append($('<script>', {type" 'text/javascript', src: fileURL}))”之前先阅读一下情况。

我正在尝试使用Amara Embedder来链接到视频。通常,对于这么简单的任务,我不会同时使用jQuery,但在这件事上我别无选择。

因此,我首先尝试了最简单的选项:

代码语言:javascript
复制
$(function() {
  $.getScript('https://amara.org/embedder-iframe');
});
代码语言:javascript
复制
<div class="amara-embed" data-height="480px" data-width="854px" data-url="http://www.youtube.com/watch?v=5CKwCfLUwj4"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

此操作将失败,并显示类似以下内容的控制台条目:

代码语言:javascript
复制
GET https://domain.com/embedder-widget-iframe/?data=%7B%22hei…22url%22%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5CKwCfLUwj4%22%7D 404 (Not Found)

从示例中可以明显看出,这并不能很好地工作。问题在于,不是执行脚本并使用URL域作为其基本amara.org,而是使用执行$.getScript()的域来执行脚本。

使用JavaScript,只需创建SCRIPT元素并将其附加到BODY中即可使其正常工作。

代码语言:javascript
复制
window.onload = (function() {
  var link = document.createElement('script');
  link.type = 'text/javascript';
  link.src = 'https://amara.org/embedder-iframe';
  document.getElementsByTagName('body')[0].appendChild(link);
})();
代码语言:javascript
复制
<div class="amara-embed" data-height="480px" data-width="854px" data-url="http://www.youtube.com/watch?v=5CKwCfLUwj4"></div>

这之所以成功,是因为它执行amara.org域中的GET

代码语言:javascript
复制
https://amara.org/embedder-widget-iframe/?data=%7B%22height%22%3A%22480px%22%2C%22width%22%3A%22854px%22%2C%22url%22%3A%22http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D5CKwCfLUwj4%22%7D

现在,我尝试了$('body').append($('<script>', {type" 'text/javascript', src: 'https://amara.org/embedder-iframe'}))$('<script>', {type" 'text/javascript', src: 'https://amara.org/embedder-iframe'}).appendTo('body')等jQuery的变体,得到了相同的结果。

我一直找不到文档将其识别为预期的功能,也找不到如何解决它。

EN

回答 1

Stack Overflow用户

发布于 2016-05-28 04:01:19

404错误来自amara.org脚本,而不是jQuery请求。当它在jQuery函数中运行时,我敢打赌this的某种上下文被错误地分配了。

编辑:找到了。代码依赖于其url在脚本标记的源属性中。

代码语言:javascript
复制
// This must be done when the js file is first loaded
var scriptFiles = document.getElementsByTagName("script");
var THIS_JS_FILE = scriptFiles[scriptFiles.length-1].src;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37490975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档