23

我有一个带有锚标记的页面。在我的 JavaScript 中,我HREF根据一些 if-else 条件动态设置锚标记的属性。现在我想以编程方式调用锚标记的点击事件。我使用了下面的代码,但没有成功。

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";

document.getElementById("proxyAnchor").href=proxyImgSrc;
document.getElementById("proxyAnchor").onclick;

谁能告诉我如何继续?我在这个链接上有一个 jQuery 灯箱实现(thickbox)。

好心提醒。提前致谢。

4

6 回答 6

71

如果您安装了 jQuery,那么为什么不这样做:

$('#proxyAnchor')[0].click();

请注意,我们使用 [0] 来指定第一个元素。jQuery 选择器返回一个 jQuery 实例,并在其上调用 click() 仅调用 click javascript 处理程序,而不是 href。在实际元素(由 [0] 返回)上调用 click() 将跟随 href 等中的链接。

请参阅此处的示例来说明差异:http: //jsfiddle.net/8hyU9/

至于为什么您的原始代码不起作用-可能是因为您正在调用onclick,而不是onclick()。如果没有括号,JavaScript 将返回分配给onclick属性的任何内容,而不是尝试执行它。

试试下面这个简单的例子,看看我的意思:

var f = function() { return "Hello"; };     
alert(f);
alert(f());

第一个将显示函数的实际文本,而第二个将按预期显示单词“Hello”。

于 2009-06-11T12:07:32.007 回答
12

你应该像这样调用点击事件:

document.getElementById("proxyAnchor").click();
// $('#proxyAnchor').click();

但在您的情况下,如果您愿意,您应该将窗口的位置设置为重定向页面。

于 2009-06-11T12:08:19.960 回答
1

我相信您想调用该click事件。不是“点击”。此外,请确保在调用方法时包含括号 ()。不要将方法(以 ( 和 ) 结尾)与不以 ( 和 ) 结尾的属性和属性混淆。

// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
于 2009-06-11T12:06:34.817 回答
1

我相信这就是你所追求的:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
于 2009-06-11T12:12:47.580 回答
1

对于立即页面更改,您还可以执行以下操作:

var proxyImgSrc= "CostMetrics.aspx?Model=" + model + "&KeepThis=true&TB_iframe=true&height=410&width=650";
window.location = proxyImgSrc;

这是 W3 Schools 的一个例子: http ://www.w3schools.com/js/tryit.asp?filename=tryjs_location

于 2009-06-11T12:20:43.333 回答
0

如果您正在寻找对 IE 的支持,那么下面的示例可能会有所帮助:

假设您在响应对象中有 blob 文档:

                 var blob = new Blob([response.responseText], { type: headers['content-type'] });
            if (navigator.msSaveOrOpenBlob) {
                //Launches the associated application for a File or Blob saving for non webkit based browser such as safari or IE
                navigator.msSaveOrOpenBlob(blob, "cvSummary.xml");
            }
            else {
                //code for webkit based browser
                var link = document.createElement('a');
                document.body.appendChild(link);
                link.style = "display: none";
                var url = window.URL.createObjectURL(blob);
                link.href = window.URL.createObjectURL(blob);
                link.download = "cvSummary.xml";
                link.dataset.downloadurl = ["text/xml", link.download, link.href].join(':');
                link.click();
                window.URL.revokeObjectURL(url);
            }
于 2018-05-29T07:20:26.803 回答