2015-11-06 170 views
0

我有一個JavaScript函數JavaScript函數沒有被調用正確

function createHyperLinkDraft(){ 
    var xWin = window.opener; 
    var hyperLink = document.addHyperLinkForm.hyperLinkNameDraft.value; 

    if(hyperLink){ 

     var urlList = "openDraftFilesAction.action?draftID="+ document.addHyperLinkForm.DraftNo.value ; 
     hyperLinkName = "&nbsp;<a style='text-decoration:underline;cursor:pointer' onclick=javascript:window.open('"+urlList+"','subWindow','HEIGHT=600,WIDTH=600,screenX=100,left=100,screenY=100,top=100')>"+ hyperLink +"</a>&nbsp;"; 

     xWin.Xinha._currentlyActiveEditor.insertHTML(hyperLinkName); 

     document.addHyperLinkForm.reset(); 
     window.close(); 
    } 
} 

這是獲得存儲在注意到編輯器。但是當我在我的動作類看到它得到存儲爲

<p>l&nbsp;<a onclick="javascript:window.open('openDraftFilesAction.action? draftID=9/1021/2015-FT-COORD-new" 3?,?subwindow?,?height="600,WIDTH=600,screenX=100,left=100,screenY=100,top=100')" style="cursor: pointer; text-decoration: underline">link</a>&nbsp;</p> 

如果說實際的ID草案爲9 /二千〇一十五分之一千〇二十一-FT-COORD-新文件12oct/3。

因此,本草案未被打開。我不明白爲什麼會發生這種情況。

+0

你有最後的支架關閉? – z3ntu

+0

創建一個小提琴並在那裏重現錯誤。 –

+0

哪個支架? – Abhi

回答

1

需要使用encodeURIComponent()

從MDN來編碼它:

encodeURIComponent方法()方法編碼的統一資源標識符(URI)通過由一個替換某些字符的每個實例分量,表示該字符的UTF-8編碼的兩個,三個或四個轉義序列(對於由兩個「代理」字符組成的字符,將只有四個轉義序列)。

function createHyperLinkDraft() { 
    var xWin = window.opener; 
    var hyperLink = document.addHyperLinkForm.hyperLinkNameDraft.value; 

    if (hyperLink) { 
     var urlID = document.addHyperLinkForm.DraftNo.value; 
     urlID = encodeURIComponent(urlID); 
     var urlList = "openDraftFilesAction.action?draftID="+ urlID; 
     hyperLinkName = "&nbsp;<a style='text-decoration:underline;cursor:pointer' onclick=javascript:window.open('"+urlList+"','subWindow','HEIGHT=600,WIDTH=600,screenX=100,left=100,screenY=100,top=100')>"+ hyperLink +"</a>&nbsp;"; 

     xWin.Xinha._currentlyActiveEditor.insertHTML(hyperLinkName); 

     document.addHyperLinkForm.reset(); 
     window.close(); 
    } 
} 
+0

它有幫助,但你能解釋什麼是encodeURIComponent? – Abhi

+0

我在答案中加入了它。它是一個標準的JavaScript函數。 – AndreaBogazzi

+0

其實它有一個問題,第一次,鏈接不會打開。但是,在刷新頁面時,它可以打開 – Abhi