2013-03-28 68 views
1

刪除的JavaScript鏈接的代碼如下:從鏈接

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

所以我想我可能會走在正確的軌道上。請幫幫我。提前致謝!

+0

你想要在鏈接被更改後實現什麼功能(例如,沒有鏈接,刪除所有http:// ...)? – 2013-03-28 03:44:10

+0

我想要鏈接指向網站。即:谷歌鏈接去http://google.com – MathMan08 2013-03-28 03:45:07

+0

那麼刪除確認? – 2013-03-28 03:45:32

回答

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/

另一個有趣的想法:改變它稱爲立即修復鏈接的功能,然後觸發點擊:

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/

+0

你在第一個上忘了分號,但是工作很棒! – MathMan08 2013-03-28 04:24:11

+0

嘿,沒有想到這一點。太好了! – 2013-03-28 04:40:31

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

在otherhand,如果你要刪除的comfirm箱和改變:

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屬性。

+0

你可以做一個jsFiddle鏈接嗎?我不能得到它的工作:/ – MathMan08 2013-03-28 03:57:31

+0

好工作:DI將投票當我可以:) – MathMan08 2013-03-28 04:25:10

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"

+0

你的方式也很好,謝謝! – MathMan08 2013-03-28 04:24:35