在IE 9中,使用document.querySelectorAll()按类查找动态创建的元素失败

时间:2013-12-11 00:49:51

标签: javascript internet-explorer

一些上下文

我有一个使用服务提供项目菜单的网页。它的工作原理是将您的信息添加到提供商网站上的数据库,并将其JavaScript放在抓取数据的页面上,并将元素动态添加到您的页面。

由于菜单很长,我想在页面顶部创建一个仅使用每个菜单项标题的索引,以便访问者可以一目了然地看到每种类型的项目。此外,由于我不会更新数据库,我希望菜单从其他服务生成的内容中创建自己。

来自服务的动态创建的内容对每个菜单项标题使用特定的类。我写了一个脚本,用这个类获取每个元素,并用内容创建索引。成功!排序......

这是问题

我的脚本适用于除IE9及以下版本之外的所有当前浏览器(尽管我不太担心IE 9以下)。我已经将问题缩小到document.querySelectorAll(),它在IE 9中返回一个空节点列表。我已经阅读了尝试使用querySelectorAll()访问动态创建的DOM元素的问题,但是不能似乎找到了解决方案。

有趣的是,当脚本在窗口加载时运行时,querySelectorAll返回一个零长度的节点列表,但是当我在IE开发人员控制台(F12)中直接输入相同的代码,在IE 9文档模式下运行时,脚本返回完整的节点列表。

更新

链接到service provider's library

调用库的代码将按如下方式插入页面中:

<script type="text/javascript"
src="http://menus.singleplatform.co/businesses/storefront/API KEY OMITTED">
</script>
<script>
    var options = {};
    options['PrimaryBackgroundColor'] = '#FFFFE1';
    options['MenuDescBackgroundColor'] = '#d9d9d9';
    options['SectionTitleBackgroundColor'] = '#FFFFE1';
    options['SectionDescBackgroundColor'] = '#f1f1f1';
    options['FeedbackSubmitBackgroundColor'] = '#f1f1f1';
    options['ItemBackgroundColor'] = '#ffffff';
    options['FeedbackBackgroundColor'] = '#ffffff';
    options['FeedbackCancelBackgroundColor'] = '#ffffff';
    options['PrimaryFontFamily'] = 'Roboto';
    options['BaseFontSize'] = '15px';
    options['FontCasing'] = 'Default';
    options['PrimaryFontColor'] = '#573A2C';
    options['MenuDescFontColor'] = '#000000';
    options['SectionTitleFontColor'] = '#555555';
    options['SectionDescFontColor'] = '#555555';
    options['FeedbackSubmitFontColor'] = '#555555';
    options['ItemTitleFontColor'] = '#555555';
    options['FeedbackFontColor'] = '#555555';
    options['FeedbackFieldFontColor'] = '#555555';
    options['FeedbackCancelFontColor'] = '#555555';
    options['ItemDescFontColor'] = '#555555';
    options['ItemPriceFontColor'] = '#555555';
    options['MenuTemplate'] = '2';
    new BusinessView("business-identifier", "target-element-id", options);
</script>

0 个答案:

没有答案