我有一个使用服务提供项目菜单的网页。它的工作原理是将您的信息添加到提供商网站上的数据库,并将其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>