我有一个如下编写的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;
}
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,它与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;
}
Run Code Online (Sandbox Code Playgroud)
但现在它在两种浏览器中都不起作用.请帮我告诉我我做错了什么.
你的问题是:
iframe = $('<iframe></iframe>');
iframe.id = "hiddenDownloader";
Run Code Online (Sandbox Code Playgroud)
iframe
指的是jQuery对象而不是DOM节点.您将不得不使用.prop
来设置ID:
iframe = $('<iframe></iframe>');
iframe.prop('id', "hiddenDownloader");
Run Code Online (Sandbox Code Playgroud)
你也有同样的问题:
if (iframe === null) {
Run Code Online (Sandbox Code Playgroud)
你需要检查的长度iframe
:
if (iframe.length === 0) {
Run Code Online (Sandbox Code Playgroud)
再次在iframe.src = url;
Maybe你可以想出这个:
iframe.attr('src', url);
Run Code Online (Sandbox Code Playgroud)
但是为什么要将vanilla JavaScript转换为jQuery?
归档时间: |
|
查看次数: |
171 次 |
最近记录: |