我有一个如下编写的 JavaScript 函数,它在 Firefox 中可以很好地下载给定的 txt 内容。
self.downloadURL = function (url) {
var iframe;
iframe = document.getElementById("hiddenDownloader");
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = "hiddenDownloader";
iframe.style.display = "none";
document.body.appendChild(iframe);
}
iframe.src = url;
}
但由于某些原因,它不能在 IE 9 上正常工作。所以我尝试转换成等效的jquery,因为jquery与所有浏览器兼容。
这是相同功能的 jquery 等效项:
self.downloadURL = function (url) {
var iframe;
iframe = $("#hiddenDownloader");
if (iframe === null) {
iframe = $('<iframe></iframe>');
iframe.id = "hiddenDownloader";
$("#hiddenDownloader").css("display", "none");
$(document.body).append(iframe);
}
iframe.src = url;
}
但现在它在两种浏览器中都不起作用。请帮助我知道我做错了什么。
最佳答案
您的问题在于:
iframe = $('<iframe></iframe>');
iframe.id = "hiddenDownloader";
iframe
指的是 jQuery 对象而不是 DOM 节点。您必须使用 .prop
来设置 id:
iframe = $('<iframe></iframe>');
iframe.prop('id', "hiddenDownloader");
你也有同样的问题:
if (iframe === null) {
您需要检查iframe
的长度:
if (iframe.length === 0) {
再次在iframe.src = url;
也许你可以弄清楚这一点:
iframe.attr('src', url);
但是为什么要将普通 JavaScript 转换为 jQuery?
关于javascript 函数转换为 jquery 等价函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18636512/