1

リンクのコードは次のとおりです。

<td class="buttonColumn">
<a href="javascript:confirmDialog('Are you sure you want go?', 'http://google.com');" class="actionButtonNew">Leave to Google</a>
</td>

<td class="buttonColumn">
<a href="javascript:confirmDialog('Are you sure you want go?', 'http://yahoo.com');" class="actionButtonNew">Leave to Yahoo</a>
</td>

ページには、変更が必要なまったく同じ形式のボタンが複数あります。私は次のようなことを考えていました:

var fix = document.getElementsByClassName('actionButtonNew');
for (var i=0; i<fix.length; i++) {

コードを完成させる方法がわかりません。私はこれを試しました:

var fix = document.getElementsByClassName('actionButtonNew');
for(var i = 0; i < fix.length; i++) {
    try {
        var l = fix[i];
        var h = fix[i].parentNode.getElementsByClassName('actionButtonNew')[0].href.replace("javascript:confirmDialog('Are you sure you want to go?',", "");
        l.href = h;
    } catch(e) {}
}

私はそれが非常に厄介で悪いことを知っています。リンクを次のように変更します: ' http://google.com ');

だから私は正しい軌道に乗っているかもしれないと思います。私を助けてください。前もって感謝します!

4

3 に答える 3

1

ここにアイデアがあります: いくつかのエッジケースで壊れるはずの厄介な正規表現を扱うのではなく、confirmDialog確認せずにリダイレクトする関数に置き換えます:

window.noConfirm = function(m, url) {
    document.location.href = url;
}

var fix = document.getElementsByClassName('actionButtonNew');
for (var i = 0; i < fix.length; i++) {
    fix[i].href = fix[i].href.replace('confirmDialog', 'noConfirm');
}

http://jsfiddle.net/AV4tB/

もう 1 つの面白いアイデア: リンクをすぐに修正してクリックをトリガーする関数を呼び出すように変更します。

window.fixMe = function(m, url) {
    this.href = url;
}

var linksToFix = document.getElementsByClassName('actionButtonNew');
for (var i = 0; i < linksToFix.length; i++) {
    window.a = linksToFix[i];
    linksToFix[i].href = linksToFix[i].href.replace('confirmDialog(', 'fixMe.call(a, ');
    linksToFix[i].click();
}

http://jsfiddle.net/AV4tB/1/

于 2013-03-28T04:11:24.307 に答える
0

これを試して:

var fix = document.getElementsByClassName('actionButtonNew');
for (var i = 0; i < fix.length; i++) {
    fix[i].href = fix[i].href.replace(/javascript:confirmDialog\(\'Are you sure you want go\?\'\, \'(http\:\/\/.*\.(.){2,3})'\);/gi,'$1');
}

正規表現を使用して確認JSをリンクだけに置き換えます。
例えば"javascript:confirmDialog('Are you sure you want go?', 'http://yahoo.com');""http://yahoo.com"

于 2013-03-28T03:54:23.210 に答える
0

ユーザーに「本当にやりたいの?」と言うのはかなり面倒です。リンクをクリックするたびに。結局のところ、戻るボタンは通常、それらをまっすぐに戻すか、エスケープ キーを押すとナビゲーションがキャンセルされます。

A 要素のすべてがリンクであるとは限らないため (一部はターゲットです)、document.linksコレクションを使用してページ内のすべてのリンクを取得し、それを反復処理できます。

// Function to call
function navPrompt() {
  var text = this.textContent || this.innerText
  return confirm('Are you sure you want to go to ' + text + '?');
}

// Attach to all listeners
window.onload = function() {

  var links = document.links;
  var i = links.length;
  while (i--) {
    links[i].onclick = navPrompt;
  }
}

一方、確認ボックスを削除して変更する場合:

href="javascript:confirmDialog('Are you sure you want go?', 'http://google.com');"

に:

href="http://google.com"

できるよ:

window.onload = function() {

  var link, links = document.links;
  var i = links.length;
  while (i--) {
    link = links[i];
    link.href = link.href.replace(/.*(http[^\'\"]+).+/i,'$1');
  }
}

URL を取り除き、それを href プロパティに割り当てます。

于 2013-03-28T03:50:50.787 に答える