アンカータグのあるページがあります。私の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)があります。
親切なアドバイス。前もって感謝します。
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」という単語を表示します。
次のようにクリックイベントを呼び出す必要があります。
document.getElementById("proxyAnchor").click();
// $('#proxyAnchor').click();
しかし、あなたが望むなら、ウィンドウの場所をリダイレクトページに設定するべきです。
私はこれがあなたが望んでいることだと信じています:
var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;
すぐにページを変更するには、次のようにすることもできます。
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
click
イベントを呼び出したいと思います。 「onClick」ではありません。また、メソッドを呼び出すときは、必ず括弧()を含めてください。 ((と)で終わるメソッド)を(と)で終わらない属性とプロパティと混同しないでください。
// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();
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);
}