请在说“使用$.getScript(fileURL)或$('body').append($('<script>', {type" 'text/javascript', src: fileURL}))”之前先阅读一下情况。
我正在尝试使用Amara Embedder来链接到视频。通常,对于这么简单的任务,我不会同时使用jQuery,但在这件事上我别无选择。
因此,我首先尝试了最简单的选项:
$(function() {
$.getScript('https://amara.org/embedder-iframe');
});<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>
此操作将失败,并显示类似以下内容的控制台条目:
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中即可使其正常工作。
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);
})();<div class="amara-embed" data-height="480px" data-width="854px" data-url="http://www.youtube.com/watch?v=5CKwCfLUwj4"></div>
这之所以成功,是因为它执行amara.org域中的GET:
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的变体,得到了相同的结果。
我一直找不到文档将其识别为预期的功能,也找不到如何解决它。
发布于 2016-05-28 04:01:19
404错误来自amara.org脚本,而不是jQuery请求。当它在jQuery函数中运行时,我敢打赌this的某种上下文被错误地分配了。
编辑:找到了。代码依赖于其url在脚本标记的源属性中。
// 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;https://stackoverflow.com/questions/37490975
复制相似问题