2009-12-16 113 views
1

請原諒我的無知我對Javascript並不是很熟悉,並且已被委託修復開發人員不再在公司內發現的錯誤。Onclick javascript在IE中無法正常工作

onclick在FireFox中完美工作,但是在IE 7 & 8(我們測試的唯一一個)中,它似乎正常運行了onclick函數,然後代替提交到goStep3中的表單URL的數據( ),它會遍歷頁面上的每一次onclick,'href =「#」'最終會提交錯誤的信息,因爲變量被覆蓋了50次。

<a href="#" onclick="trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;">view</a> 

編輯: 當我在IE8上運行的開發工具trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;我得到返回功能的假外....去除它工作得很好的一個錯誤。

是我相信的是造成問題

trackSponsor()工作正常行並返回false

goStep3()然而相當大的功能,它的工作原理是檢索值從其他4個功能中

:內 theAction

分配值一個URL它通過編輯完成的功能

我試着從這個函數中返回false,並且將document.FindForm.submit()更改爲document.forms['FindForm'].submit()的'正確'語法,它仍然不會提交,直到通過頁面上的所有其他'onclick'。

在此先感謝!

備註:

也正在使用jQuery。

JavaScript沒有拋出任何錯誤。

這在Firefox正常工作

我可以看到它經歷所有的其他功能其他的「onClick是使用開發工具,並通過網頁步進,直到它已走過了它不提交goStep3的結果頁面上的所有其他'onclick'功能。

+0

如果向下降低goStep3功能僅限於表單提交,會發生什麼?編輯 – Zoidberg 2009-12-16 15:36:36

+0

以包含該信息。這幾乎就像'onclick'在某種程度上觸發了整個頁面上的所有'onclick'... – user103219 2009-12-16 15:46:12

+1

你能發佈更多來自goStep3()函數的代碼嗎?我已經根據您在此處介紹的代碼進行了一些測試,但無法重現您的結果。你是否使用任何JavaScript框架,如jQuery或Prototype? – 2009-12-16 15:47:02

回答

0

這個問題是因爲IE使用泡泡而被調用的!感謝您的幫助,我已將代碼解決方案包含在goStep3()中。

var browserName = navigator.appName; 
if (browserName == "Microsoft Internet Explorer") { 
    window.event.cancelBubble = true;  
} 
+0

好知道ü找到了答案:) – 2009-12-17 07:13:20

0

我會從刪除「return false;」開始從onClick事件,因爲它真的沒有做任何事情。

+3

它正在停止鏈接到正在遵循的##,使頁面跳轉並可能停止導航。它*必須*留在。 – bobince 2009-12-16 15:50:58

+0

試圖它沒有任何效果。 – user103219 2009-12-16 15:51:05

+0

哦,對,現在我想到了。下面引用「javascript:void(0)」的答案可以解決這個問題。 – 2009-12-16 15:53:08

0

嘗試改變

href="#" 

href='javascript:void(0)' . 
+0

對不起,這也不起作用。 – user103219 2009-12-16 15:55:23

0

,事情會錯了,我不能肯定地說,但我反對使用形式的name屬性來引用它像你這樣做這裏:

document.forms['FindForm'].action = theAction; 
document.FindForm.submit(); 

爲什麼不試試下面的jQuery:

$("form:FindForm").action = theAction; 
$("form:FindForm").trigger("submit"); 

您還應該檢查$("form:FindForm")是否確實引用了所需的表單元素。

+0

對不起,我沒有編寫代碼,我剛被任務嘗試修復。 你的方法是在查詢1.2.3文件恢復「預期目標」和「對象不支持此屬性或方法」在goStep3() – user103219 2009-12-16 16:31:59

+0

的表單元素不能被發現。您收到此錯誤是因爲您無法在缺少的對象上觸及'.action'。考慮給表單元素一個'id'屬性並以這種方式引用它。 – 2009-12-16 16:36:31

+0

確定這行document.FindForm.submit();被用於多個地方和工作。事實上,形式是

user103219 2009-12-16 16:50:52

1

「發佈我的前面作爲一個答案評論」

我看到了很多的jQuery正在與屬性選擇使用,所以PLZ覈對那些代碼..

編輯:

我注意到ur不熟悉Javascript ..所以假如你不知道,一個jQuery選擇器,將選擇匹配某個「選擇器過濾器」的所有標籤並對它們執行特定操作......所以如果有選擇器選擇所有具有href屬性的標籤(或者可能是他們之間的另一個共同屬性),那麼這將是你的問題的原因。

編輯:-after你發佈你的答案 -

高興雖是小有一點werid,根據 會對您的問題它通過「與每一個元素,您找到了答案..

HREF =「#」 ..

但是據 msdn,事件冒泡只是將這些未處理的事件來處理的父元素。不是通過「相似」個標籤:)

哦well..nothing是合乎邏輯的,當涉及到IE

+0

感謝您的! – user103219 2009-12-17 14:17:36