我有一个网站,它有三个无线电输入,根据选择的输入,它周围的html页面的部分将会改变。一切都很完美,除了IE8(当然)。我对这个页面的问题是当我点击输入时,该输入有一个事件监听器'更改'在它上面,什么都不会发生,直到第二次点击事件才会发生。我知道IE8不会处理addEventListeners但是我使用了pollyfill来处理所有这些并且在网站上使用了大量其他东西的addEventListeners并且它们工作正常。
要注意的第二件事是,如果我将事件监听器切换为“点击”,那么IE8中的一切工作正常。事件。唯一的问题和原因我不仅仅是将其切换为“点击”。是因为标签。我仍然是用户仍然可以通过表格选项以获得适当的用户体验。
最后当我在VB8中为IE8启动网站时,这个功能(即使使用' click'事件)在我将其置于调试模式并且找到所有polyfill.min之后将无法工作.js错误。然后我可以停止调试,然后一切都会按预期工作。我将提供我的错误图片。我不知道为什么以及导致它们的原因。我的猜测是一些外部脚本,我可能会提供第三方功能。无法想出来。
这里是如何调用函数,
这是调用函数的地方:
function attachToggleReportType (elem) {
console.log('Trigger attachToggleReportType');
elem.addEventListener('change', toggleReportType, false);
}
以下是基于事件
执行操作的主要功能function toggleReportType () {
console.log('Trigger toggleReportType');
var reportOptions = document.querySelectorAll('.report'),
reportIncToggle = document.querySelectorAll('.toggle');
console.log(this.getAttribute('data-sample-report-link'));
reportSample({
href: this.getAttribute('data-sample-report-link'),
src: this.getAttribute('data-sample-report-image'),
title: this.getAttribute('data-sample-report-title')
});
reportIncToggle.forEach(toggleInclude);
}
答案 0 :(得分:0)
所以我找到了解决问题的方法。它并不完美,但现在它对我来说很好。这是一个非常奇怪的问题,因为在IE8中我的事件监听器有一种类型的改变'总是会有点击延迟。所以无论我点击哪个收音机,事件发生的唯一时间是我第二次再次点击屏幕上的任何地方。我知道IE8不会处理addEventListeners,但我使用的是polyfill来容纳这个。在调试模式下,我也会收到polyfill错误,所以我想知道这是否与此相关。无论如何,我现在解决了这个问题,包括改变'事件听现代浏览器,然后在IE8我把它切换到一个焦点'事件和一切仍然完美。我讨厌有两种事件类型,但这是解决这个bug的唯一方法。另外需要注意的是,更改事件在第二次单击时仍然在IE8中有效,因此尝试检测浏览器是否可以处理此事件类型对我来说不是一个选项。