0

mysql でクエリを実行し、ドメインを含むいくつかのデータを返すスクリプトを含む小さなサイトがあります。これらのドメインは生成された html リンクであり、php の部分にアクセスできないため、javascript で変更したいのですが、javascript と css コードにはアクセスできます。

リンクでクリックイベントがトリガーされたときにコードが実行されるようにしてください。デフォルトで実行を停止して変更しようとしましたが、コードでページが開きません。preventDefault を削除すると、Firefox でのみ機能しますが、Chrome はありません。(window.open は使用しません。元のリンクを変更したい)。

var domains = document.getElementsByClassName("domain");

for(var x = 0; x < domains.length; x++){
    if(domains[x].addEventListener) {
        domains[x].addEventListener("click", changeLink, "false");
    } else if(domains[x].attachEvent) {
        domains[x].attachEvent("onclick", changeLink);
    }
}

function changeLink(evt){

    var urlOriginal = this.href;

    // If I remove preventDefault, the function runs correctly on firefox but not in chrome
    evt.preventDefault();

    if(urlOriginal != 'http://google.com') {

        urlOriginal = urlOriginal.replace(/http:\/\//g, '');

        evt.stopPropagation();

        this.href = 'http://intodns.com/' + urlOriginal;

        console.log('Okay !');

    }

    return true;
}

いくつかの変更を試みましたが、何も実行されていません。実際にはそうではありません。

誤動作の原因を知っている人はいますか?window.openなしで修正するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

href私の理解が正しければ、属性に設定されているリンクではなく、別のリンクにユーザーをリダイレクトする必要があります。

一度作成すると、要素の属性clickを変更しても何も起こりません。href探しているのはユーザーのリダイレクトです。これは、にあるlocationオブジェクトを変更することで可能になりますwindow

この行の代わりに:

this.href = 'http://intodns.com/' + urlOriginal;

これを試して:

window.location = 'http://intodns.com/' + urlOriginal;
于 2014-08-01T11:55:59.313 に答える
0

stopPropagation代わりに試す

http://api.jquery.com/event.stoppropagation/ - 詳細を読む

于 2014-07-30T22:04:17.790 に答える