2012-01-06 210 views
-1

Simpy有一個基於JSP的網站,它運行在一臺機器上的tomcat上,並用於配置該機器上的某些文件。Javascript'onclick'在windows環境下失敗,但在linux環境下工作

配置保存由,點擊保存按鈕,揭開序幕運行幾個劇本重新啓動的servlet實現重定向還包含了一個href ..

違規代碼:

<a onclick="if(confirm('Sava changes?')){window.location='<%=request.getContextPath()%>/restart.do'}" href="<%=request.getRequestURL()%>#"> 
    Save Changes 
</a> 

由於標題中指出,在linux環境下工作正常,但在Windows環境下,頁面重定向正常,但重新啓動servlet從未被解僱。

任何建議,歡迎你們

+2

你確定這是一個Windows/Linux的區別,而不是瀏覽器(你是否使用同一個瀏覽器?如果是這樣,哪一個?) – 2012-01-06 11:36:16

+0

另外,如果「頁面重定向好」,它很可能不是一個JavaScript問題。在瀏覽器devtools中跟蹤您的網絡並檢查appserver日誌,查看實際發生的請求以及處理它們的人員。另外,確保從onclick處理程序返回false。 – Amadan 2012-01-06 11:38:49

+0

您是否將服務器環境從Linux更改爲Windows或瀏覽器環境?如果是後者,你是否在兩個平臺上使用相同的瀏覽器?哪一個? – Quentin 2012-01-06 11:41:38

回答

1

在你onclick處理程序,你沒有做任何事情來阻止鏈接的默認動作,這是遵循href。因此,儘管您設置了window.location,但瀏覽器會在鏈接後立即覆蓋。

在舊DOM0樣式處理程序(您使用的種類)中,可以通過添加return false;來阻止鏈接的默認操作。所以:

<a onclick="if(confirm('Sava changes?')){window.location='<%=request.getContextPath()%>/restart.do'; return false;}" href="<%=request.getRequestURL()%>#"> 
    Save Changes 
</a> 

...或較好的是:

<script> 
function checkSave() { 
    if (confirm('Sava changes?')) { 
     window.location='<%=request.getContextPath()%>/restart.do'; 
     return false; 
    } 
} 
</script> 
<a onclick="return checkSave();" href="<%=request.getRequestURL()%>#"> 
    Save Changes 
</a> 

...甚至更好,考慮通過DOM2風格的事件處理,而不是(addEventListener上支持標準的瀏覽器鉤住你的JavaScript處理程序,IE8及更早版本的attachEvent)。

+0

非常棒..現在就餐了 – maelstrom 2012-01-06 16:38:51

0

添加返回假給你們的末日,如果在你的onclick事件條款,以防止被excuted HREF如果條件MATHES:

<a onclick="if(confirm('Sava changes?')){window.location='<%=request.getContextPath()%>/restart.do';return false;}" href="<%=request.getRequestURL()%>#"> 
+0

我已經在onclick事件中的if子句中添加了**返回false **。這將阻止鏈接href執行,所以如果你的if子句有效。 href將被忽略 – 2012-01-06 11:43:37

+0

我編輯了答案,非常感謝你的關注。 – 2012-01-06 11:49:49

+0

,如果可能請儘快修改您的投票 – 2012-01-06 11:53:42