JavaScript 函数转换为 jquery 等效项
javascript function convert into jquery equivalent
我有一个编写如下的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);
但是为什么要将vanilla JavaScript转换为jQuery呢?
似乎是一种奇怪的文件下载方式。
无论如何,这可能与原始工作相同:
if (!iframe.get(0)) {
...
}
。以及另一张海报提到的id
属性。
iframe = document.getElementById("hiddenDownloader");
iframe = $("#hiddenDownloader");
这些行并不等效。第二个创建一个 jQuery 对象,因此对 null 的检查永远不会等同于 true
此链接可能有助于您:
http://www.sitepoint.com/forums/showthread.php?743000-IE9-Iframes-DOCTYPES-and-You
或者您可以将其添加到顶部:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- 将
iframe.src = url;
替换为iframe.attr("src",url + "?"+ Math.random());
以防止 IE9 中出现缓存问题。 - 将
iframe.id = "hiddenDownloader";
替换为iframe.attr("id","hiddenDownloader");
- 将
if (iframe === null) {
替换为if (iframe.length === 0) {
尝试:
iframe = $("#hiddenDownloader")[0];
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量