提问人:OuuGiii 提问时间:8/14/2018 最后编辑:OuuGiii 更新时间:8/14/2018 访问量:227
JavaScript 单击函数未立即在 IE 上触发 JSF 操作方法
JavaScript click function not triggering JSF action method immediately on IE
问:
我已经认识到,当通过 JavaScript 完成点击时,它不会立即在 IE 上触发操作方法,而是浏览器等待,直到代码通过进行点击的函数,然后触发操作方法。
在 Chrome 上,单击完成后会立即触发操作方法。
下面是一个示例 xhtml 代码:
<h:form>
<ace:pushButton id="button1" action="#{someBean.someFunction1}" label="Button1" />
</h:form>
<h:form>
<ace:pushButton id="button2" action="#{someBean.someFunction2}" label="Button2" />
</h:form>
<h:form>
<ace:pushButton id="button3" action="#{someBean.someFunction3}" label="Button3" />
</h:form>
<h:form>
<ace:pushButton id="button4" action="#{someBean.someFunction4}" label="Button4" />
</h:form>
下面是一个示例 javaScript 代码:
function setTestButtonsOnclickFunctions() {
var button1 = document.querySelector('[id*="button1_button"]');
var button2 = document.querySelector('[id*="button2_button"]');
var button3 = document.querySelector('[id*="button3_button"]');
var button4 = document.querySelector('[id*="button4_button"]');
button1.onclick = function() {
button2.click();
var someRandomVariable = 10;
};
button2.onclick = function() {
var someRandomVariable = 10;
};
button3.onclick = function() {
button4.click();
alert("Button 4 clicked in JavaScript");
var someRandomVariable = 10;
};
button4.onclick = function() {
var someRandomVariable = 10;
};
}
(function($) {
$(document).ready(setTestButtonsOnclickFunctions);
})(jQuery);
注意:
如您所见,button3 onclick 函数中有一个警报。
它之所以存在,是因为我认识到,当触发警报时,会触发操作方法。
但如果没有它,操作方法将在函数完成后触发。onclick
还有一个显示,当代码传递了该方法时,操作方法不会在 IE 上触发,而是在 Chrome 上触发。这使得调试变得容易。someRandomVariable
click()
为什么有两个按钮,是因为这是测试该方法的简单方法。click()
问题:
- 为什么操作方法不会立即在 IE 上触发?
- 为什么该方法在 IE 上不像在 Chrome 上那样触发操作方法?
click()
- 有没有办法在运行方法时立即在 IE 上触发操作方法,而无需使用警报?
click()
对于最后一个问题,你可能想知道为什么有人会想要那个。
好吧,我有一个场景,我想在窗口关闭时运行一个操作方法。
我在 JavaScript 中使用该方法,但由于我上面提到的原因,操作方法从未在 IE 上触发。beforeunload
另一个问题:
有没有办法在IE上的事件中触发操作方法?beforeunload
答:
-4赞
pixellab
8/14/2018
#1
试试这个
(function($) {
setTestButtonsOnclickFunctions()
})(jQuery);
评论
1赞
OuuGiii
8/14/2018
这个答案只是抛出一个错误。也许缺少“;”?我不认为这是IE以不同方式运行的原因。
0赞
epascarello
8/14/2018
所以你删除了文件准备好了吗?为什么。。。。没有任何意义,它会有什么不同。
评论
beforeunload
beforeunload