web-dev-qa-db-ja.com

JavaScript:JavaScriptからアンカータグのクリックイベントを呼び出す

アンカータグのあるページがあります。私のJavaScriptでは、いくつかのif-else条件に基づいてアンカータグのHREF属性を動的に設定しています。次に、アンカータグのクリックイベントをプログラムで呼び出します。以下のコードを使用しましたが、成功しませんでした。

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)があります。

親切なアドバイス。前もって感謝します。

19
Shyju

JQueryがインストールされている場合は、次のようにしてください。

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

[0]を使用して最初の要素を指定していることに注意してください。 jQueryセレクターはjQueryインスタンスを返し、その上でclick()を呼び出すと、クリックJavaScriptハンドラーのみが呼び出され、hrefは呼び出されません。実際の要素([0]によって返される)でclick()を呼び出すと、hrefなどのリンクをたどります。

違いを説明する例については、こちらをご覧ください: http://jsfiddle.net/8hyU9/

元のコードが機能しない理由については、onclick()ではなくonclickを呼び出しているためと考えられます。括弧がないと、JavaScriptはonclickプロパティに割り当てられているものをすべて返し、実行しようとしません。

次の簡単な例を試して、私の意味を確認してください。

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

1つ目は関数の実際のテキストを表示し、2つ目は期待どおり「Hello」という単語を表示します。

68
samjudson

次のようにクリックイベントを呼び出す必要があります。

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

しかし、あなたが望むなら、ウィンドウの場所をリダイレクトページに設定するべきです。

11
Canavar

私はこれがあなたが望んでいることだと信じています:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
1
karim79

すぐにページを変更するには、次のようにすることもできます。

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

これはW3学校の例です: http://www.w3schools.com/js/tryit.asp?filename=tryjs_location

1
Darren Torpey

clickイベントを呼び出したいと思います。 「onClick」ではありません。また、メソッドを呼び出すときは、必ず括弧()を含めてください。 ((と)で終わるメソッド)を(と)で終わらない属性とプロパティと混同しないでください。

// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
1
Sampson

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);
            }