未在锚点上显示的JavaScript前置内容在Safari中单击

时间:2013-11-12 00:05:00

标签: javascript jquery wordpress safari onclick

我正在使用WordPress开发一个项目,该项目利用主题定制器来帮助其他人在我这个网站上工作。我们正在动态加载很多内容和选项,例如Google字体,因此加载定制程序需要几秒钟才能完全加载(在管理页面上徘徊,然后在几秒钟后进入/customize.php页面)

正因为如此,我想添加一个简单的“定制器加载”消息,该消息会弹出以让用户知道发生了什么。在Chrome和Firefox中一切正常,但Safari和Internet Explorer(据我在Sauce测试中可以看出)给我带来了问题。

我正在使用以下JavaScript来添加加载消息:

$('a[href="customize.php"]').click( function() {
  $('head').prepend('<style type="text/css"></style>');
  $('body').prepend('<div id="loading-message"></div>');
});

<style type="text/css">块内,我只是简单地包含了我的样式,然后<div class="loading-message"></div>就是我放置内容的地方。

Safari中发生的事情(以及我能说的IE)是,当点击<a href="customize.php">...</a>时,样式和内容会被添加到DOM中(当我检查页面时,我可以看到它们),但它们实际上并不可见,而在Chrome和Firefox中它们确实可见。

如果我在链接上使用e.preventDefault(),加载消息就会显示正常。其他事件(例如alert()console.log()注册正常,链接将按预期继续进行。只有添加到DOM中的新内容才会变得可见。

我无法确切地知道可能导致这种情况的原因,并且非常感谢任何帮助。我尝试在JSFiddle中重新创建问题,但我无法复制我在WordPress管理面板中获得的相同结果(如果你更改$('a[href="customize.php"]')后端中的任何其他slug,如“themes.php”,它虽然有相同的结果。

0 个答案:

没有答案