2015-11-06 162 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