JavaScript函数没有被调用正确
我有一个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 = " <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> ";
xWin.Xinha._currentlyActiveEditor.insertHTML(hyperLinkName);
document.addHyperLinkForm.reset();
window.close();
}
}
这是获得存储在注意到编辑器。但是当我在我的动作类看到它得到存储为
<p>l <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> </p>
如果说实际的ID草案为9 /二千〇一十五分之一千〇二十一-FT-COORD-新文件12oct/3。
因此,本草案未被打开。我不明白为什么会发生这种情况。
需要使用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 = " <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> ";
xWin.Xinha._currentlyActiveEditor.insertHTML(hyperLinkName);
document.addHyperLinkForm.reset();
window.close();
}
}
它有帮助,但你能解释什么是encodeURIComponent? – Abhi
我在答案中加入了它。它是一个标准的JavaScript函数。 – AndreaBogazzi
其实它有一个问题,第一次,链接不会打开。但是,在刷新页面时,它可以打开 – Abhi
你有最后的支架关闭? – z3ntu
创建一个小提琴并在那里重现错误。 –
哪个支架? – Abhi