javascript函数转换为jquery等效函数
我有一个如下编写的javascript函数,它在Firefox中可以很好地下载给定的txt内容javascript函数转换为jquery等效函数,javascript,jquery,Javascript,Jquery,我有一个如下编写的javascript函数,它在Firefox中可以很好地下载给定的txt内容 self.downloadURL = function (url) { var iframe; iframe = document.getElementById("hiddenDownloader"); if (iframe === null) { iframe = document.createElement
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;
}
self.downloadURL=函数(url){
var-iframe;
iframe=$(“#隐藏下载程序”);
if(iframe==null){
iframe=$('');
iframe.id=“hiddenDownloader”;
$(“#hiddenDownloader”).css(“显示”、“无”);
$(document.body).append(iframe);
}
iframe.src=url;
}
但现在它在两种浏览器中都不起作用了。请帮助让我知道我做错了什么。下载文件似乎是一种奇怪的方式 在任何情况下,这可能与最初的工作原理相同:
if (!iframe.get(0)) {
...
}
。。。还有另一张海报提到的id
属性。您的问题在于:
iframe = $('<iframe></iframe>');
iframe.id = "hiddenDownloader";
这里也有同样的问题:
if (iframe === null) {
需要检查iframe
长度的地方:
if (iframe.length === 0) {
再次在iframe.src=url代码>也许你可以找出这个:
iframe.attr('src', url);
但是为什么要将普通JavaScript转换为jQuery?试试:
iframe = $("#hiddenDownloader")[0];
- 替换
iframe.src=url代码>带有iframe.attr(“src”,url+“?”+Math.random())编码>以防止IE9中的缓存问题李>
- 替换iframe.id=“hiddenDownloader”代码>带有
iframe.attr(“id”,“hiddenDownloader”)代码>
- 将
if(iframe==null){
替换为if(iframe.length==0){
这些行是不等价的。第二行创建了一个jQuery对象,因此null的检查永远不会等于true。此链接可以帮助您:
或者您可以将其添加到顶部:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
您是否收到任何特定的错误消息?我没有收到任何特定的错误。它只是在IE 9中没有响应iframe.length==0
(或者可能只是!iframe.length)
比针对null
IMHO进行测试要好。iframe.length==0
请确定:)@null无需==0。if(iframe.length)
很好:)@Archer我知道。这是因为0是错误的,因为很多其他东西都是JavaScript(未定义、null,“”,等等)但是对于不太熟练的程序员来说,===0
更清楚:)好的观点,我刚刚意识到这已经说过了,我也错过了一个!
#Hangsheadinshame@Alagesan帕拉尼:这可能是IE9中的缓存问题,请尝试我的更新答案url+“?”+Math.random()
iframe = document.getElementById("hiddenDownloader");
iframe = $("#hiddenDownloader");
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">