我已经构建了一个饼图,它是一个带有客户端图像映射的图像。图像映射在页面中是初始定义的,但坐标通过JavaScript DOM操作进行更新以执行有用的操作。 为什么图像地图坐标上的DOM操作仅对某些浏览器有效,而其他浏览器似乎忽略了这些更改?是否有一个简单的原因并修复?饼图可以在右下角看到:http://catza.net/en/browseall/
我在Windows 7上测试了它,它适用于Chrome 15.0(WebKit),Firefox 7.0(Gecko)和Safari 5.1(WebKit)。这些浏览器在搜索引擎的扇区上显示正确的向下钻取链接,并且当鼠标指针位于饼图上时也显示标题。 Internet Explorer 8(Trident)和Opera 11.52(Presto)似乎只是坚持初始坐标。基于这种有限的测试,DOM更新图像映射坐标可与Gecko和Webkit配合使用,但不适用于Trident和Presto。欢迎提供更多测试结果。
以下是有关实施的一些背景信息。 http://catza.net/en/browseall/的页面来源显示了图片代码<img id="viz_dist
“和地图标记<map name="map_dist">
。地图中还有其他所有内容,但由于尚不知道,因此没有正确的坐标。图表和正确的地图坐标由谷歌图像图表API提供。更新代码http://catza.net/js_site/dist.js上激活的 $(文件)。就绪然后接收到DOM JSON数据的处理。它涉及coords属性使用JQuery attr 。源代码的重置可在Google Code上找到:http://code.google.com/p/catz/
我知道有很多可用的解决方法。我可以将坐标加载到服务器并在创建页面时正确设置它们。但这意味着在我收到Google的坐标之前无法发送该页面。我可以使用较新的Google Chart Tools,但我的测试表明我的页面渲染速度更快,特别是在使用Google Image Charts API的慢速工作站上。我还可以使用JavaScript动态创建img和map标签到DOM,但我宁愿在服务器上构建完整的页面。
答案 0 :(得分:0)
我找到了解决方案。问题根本不在于只对某些浏览器起作用的图像映射坐标的DOM更新。
我尝试从Google获取JSON而不是从原始服务器获取JSON时违反了相同的原始政策。然后我注意到JQuery的 $。getJSON 在IE上给出了一个常量的 parseerror 。在使JSON数据通过原始服务器后,将其作为文本发送,使用 $。ajax 接收并使用 $。parseJSON 解析图像映射坐标更新开始适用于所有浏览器。