繁体   English   中英

在IE8中无法正常工作的元素上触发点击事件

[英]Triggering click event on an element not working in IE8

我正在制作一个有角度的应用程序,但是我找到了一个需要使用jQuery的实例。 我需要单击一个在另一个隐藏按钮上引发click事件的按钮。 我知道这看起来很奇怪,但是我需要此功能,因为我正在使用的Angular模块ng-file-upload在样式图标上不起作用。

我的解决方案是创建两个按钮,一个隐藏,一个透明。 然后,将样式图标放在透明按钮上,并使另一个按钮隐藏。 然后,我使用jQuery导致在单击第一个按钮时单击第二个按钮。 这在现代的Firefox / chrome中可以正常工作,但在IE8中则完全不能。

<button id="firstClick" class="fa fa-camera-retro"></button>
<button ng-hide="true" id="secondClick" ng-file-select ng-model="files">Upload</button>
$(document).on('click', '#firstClick', function() {
    $('#secondClick').trigger('click');
});

我当前正在使用jQuery 1.10.2版。 对此提供任何帮助或替代方式的帮助将不胜感激。 提前致谢!

更新:我认为问题可能与angular-file-select有关,因为secondClick现在正在触发。 但是,angular-file-select不是。 另外,我将secondClick设置为可见,当我直接单击它时,它会触发ng-file-select。

正如您没有提到的,您使用的是应用程序的正式版。 但是,如果您使用的是angular 1.3.x则必须知道它不再支持IE8浏览器。

IE指南文档。

有一个注释:

注意: AngularJS 1.3放弃了对IE8的支持。 在我们的博客上阅读有关它的更多信息。 AngularJS 1.2将继续支持IE8,但核心团队不打算花时间解决IE8或更早版本的问题。


根据您的评论:

站点的其他所有部分都是100%成角的,并且效果很好。 正是在这种情况下,我无法想到角度解决方案。

然后,我想建议您,angular确实具有精简版的jQu​​ery,称为jqLite 您可以使用它,例如:

angular.element('#firstClick').on('click', function() {
    angular.element('#secondClick').trigger('click');
});

Angular.element的文件

编辑:您可以使用http://www.vinylfox.com/forwarding-mouse-events-through-layers/通过具有良好浏览器支持的元素转发鼠标事件

如果您很幸运,不必使用较旧的浏览器,则可以放弃指针事件CSS属性。

#firstClick {
    pointer-events: none;
    }

将jquery版本更改为较低版本。 通过查看线程,我认为1.10.2版本不支持ie8。 我也在jsfiddle中尝试过,并在ie8中测试了问题。 当我改改它的工作版本小提琴

$('#secondClick').click();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM