我通过<h:commandButton>
事件在onclick
中调用JavaScript。
<h:commandButton type="submit"
value="Next" action="#{bean.save}"
onclick="javascript:getHtml();"/>
function getHtml(){
document.getElementById('source').value="HTML source of the page";
}
在IE / Firefox中输出commandButton的HTML
<input id="Form:submit" name="Form:submit"
type="submit" value="Next"
onclick="var cf = function(){getHtml();};var oamSF = function(){return
myfaces.oam.submitForm('Form','Form:submit',null,[['sample','sample']]);};return (cf.apply(this, [])==false)? false : oamSF.apply(this, []);">
但在chrome中,我在下面的HTML
中看到了以下JavaScript错误 Refused to execute a JavaScript script. Source code of script found within request.
<input id="Form:submit" name="Form:submit"
type="submit" value="Next"
onclick="" > // onclick is empty
当我浏览论坛时,我发现这是为了防止在onclick
POST
时出现此问题所解释的跨站点脚本
Refused to execute a JavaScript script. Source code of script found within request
当一些JavaScript代码通过一个发送到服务器时会发生这种情况 HTTP POST请求,并通过HTTP响应返回相同的代码。 如果Chrome检测到这种情况,则拒绝运行脚本,并且 您收到错误消息拒绝执行JavaScript脚本。 请求中找到的脚本源代码。
我该如何解决这个问题?我正在使用JSF 2.0和Apache myfaces实现。
答案 0 :(得分:2)
怎么样
<h:commandButton type="submit"
value="Next" action="#{bean.save}"
onclick="document.getElementById('source').value='HTML source of the page';
return false;"/>
如果这对你有效,那么你没有在你的页面/项目中正确包含或放置你的js文件......
更好的解决方案是正确包含您的js文件
像这样<h:outputScript name="js/myFile.js" target="head"/>
将 myFile.js 放入 WebContent \ resources \ js
中比这样使用
<h:commandButton type="submit"
value="Next" action="#{bean.save}"
onclick="getHtml(); return false;"/>