当前位置: 首页 > 面试题库 >

除非单击鼠标,否则动态元素不会出现在IE8中

上官高翰
2023-03-14
问题内容

我有一个返回搜索结果的Ajax请求,并且正在动态创建DOM元素以显示这些结果。在除IE8之外的所有已测试浏览器中,此功能均按预期工作。

请求返回的很好,JavaScript成功运行,并且正在创建元素,但是元素未在页面中显示。它们仅在鼠标单击页面上的某处后出现。

我运行了一个快速测试,在没有Ajax请求的情况下运行了回调代码,并且在该处的行为符合预期。所以我想知道这是否与IE8管理回调线程的方式有关。有没有其他人看到过这样的行为,或者对此有见识?

回调从根本上说非常简单。我转载与此:

function catchResults(response) {
    var contentBlock = document.getElementById('divResults');
    var divResults = document.createElement('div');
    var txt = document.createTextNode("Results");
    divResults.appendChild(txt);
    contentBlock.appendChild(divResults);
}

我正在使用JQuery.ajax进行呼叫。我已经在FireFox和Chrome中看到了正确的行为。

谢谢您的帮助!


问题答案:

不久之前,我在IE8上遇到了这个问题。

我认为这可能是IE8无法重新渲染有问题的元素的问题。一种简单的确认方法是将一个类添加到父元素,然后将其删除。这将触发IE8重新渲染元素。

如果contentBlock是父元素,则可以使用以下命令进行测试:

JavaScript版本:

// Variable storing the test class name
var testClass = "testClass";
// Add test class to element
contentBlock.className += " "+testClass;
// Remove test class from element
var reg = new RegExp('(\\s|^)'+testClass+'(\\s|$)');
contentBlock.className=contentBlock.className.replace(reg,' ');

jQuery版本:

// Variable storing the test class name
var testClass = "testClass";
// Add test class to element and then remove it 
$('#divResults').addClass(testClass).removeClass(testClass);

在您添加appendChild之后,只需将其放在函数末尾即可。希望这可以解决您的问题。

参考:http :
//www.openjs.com/scripts/dom/class_manipulation.php



 类似资料:
  • 我初始化了一些元素,但不是我的锚窗格: 但是当我尝试单击MenuBar或List View时,它不起作用。例如,在这种情况下,我可以单击按钮(可能),因为它是我在AnchorPane构造函数中初始化的最后一个元素。我不能使用BorderPane或任何其他布局,因此我需要找到具有此配置的解决方案。这些是我的fxml文件: list.fxml 菜单栏。fxml rea.fxml 按钮fxml text

  • 我正在实现一个游戏,我想让玩家点击一个特定的视图。 我希望我的控制线程等到我得到一个值回来(我已经单击了视图并处理了结果)。目前,我正在通过创建一个线程、运行一个要求它们单击的方法来执行此操作,然后进入一个当鼠标单击事件更改在time循环中使用的变量时终止的time循环。 我正在写一个游戏,其中我有一个线程不断接收事件。对于一个特定事件,我想提示用户做出响应,但要做到这一点,我需要使用JavaFX

  • 问题内容: 这是我的配置: 根据此处找到的logback文档(http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy),文件将根据我的fileNamePattern 每分钟翻转一次。 我观察了它是如何工作的,这是我的发现: 它不会在很短的时间内创建日志文件。 当新日志到达时,它只会为前一分钟创建一个日志文件。(例如,我在

  • 问题内容: 作为我对登录功能的Selenium测试的一部分,我想通过识别按钮的坐标并指示Selenium单击这些坐标来单击按钮。无需标识元素本身即可完成此操作(通过id,xpath等)。 我知道还有其他更有效的方式来运行click命令,但是我希望专门使用这种方法来最好地匹配用户体验。谢谢。 问题答案: 硒不会让你这样做。

  • 问题内容: 我正在尝试使用以下代码: 但我最终收到以下错误: 聚合可能不会出现在WHERE子句中,除非它在HAVING子句或选择列表中包含的子查询中,并且正在聚合的列是外部引用SELECT dbo。[PatRoster]。* FROM dbo。[PatRoster] WHERE PatID = @PatIDParam和EffectiveEnrollmentDate IN(选择MAX(Effecti

  • 当bean是POJO时,Weld说“对类型Foo的不满意的依赖关系”是什么意思,但是,只要我在顶部添加< code>@Dependent,一切都工作正常?我记得以前不用指定作用域也能很好的工作。我想我打碎了什么东西。 说明书上说: 托管 Bean 由 Java 类实现,该类称为其 Bean 类。如果顶级 Java 类被任何其他 Java EE 技术规范(如 Java 服务器人脸技术规范)定义为受管