我正在使用Raphael-js创建动态可视化。我开始使用Raphael-1.5.0,事情似乎没问题。 http://www.iiserpune.ac.in/~coee/histome/variants.php?variant=Histone_H3.1特别是,PTM(大字母顶部的小字母)超链接到他们各自的页面。虽然这在Chrome,Firefox和Safari中有效,但IE8(在IE9中工作)上没有超链接。当我升级到Raphal-2.0时,在IE8中这个数字完全消失了。 Raphael或浏览器是否存在问题以及解决此问题的方法?在IE8中支持Raphaeljs
2
A
回答
11
正如你可能会或可能不知道的那样,Raphaël为IE6-8生成VML,而在所有其他浏览器上生成SVG。但是,VML和SVG的工作方式完全不同。这在Raphaël中记录得很不充分。
您遇到的问题是由于您正在为元素添加href属性,即ptm.attr({'href':'ptm_sp.php?ptm_sp=h3R2ci'});
,因为SVG元素可以以与DOM元素相同的方式具有事件,所以对SVG工作正常。
但是,对于VML,您必须将Raphaël特定的click
函数附加到该对象,并在其中产生document.location.href = 'http://URL';
。 Raphaël事件列于here,但请忽略关于使用您最喜爱的库的paragaph,因为这对VML不正确。
示例代码应该可以帮助您解决问题:
ptm.click(function(){
location.href = 'ptm_sp.php?ptm_sp=h3R2ci';
});
另外,我不禁注意到,你可以优化你的代码大小位。现在,您的JS代码输出是这样的:
var ptm = paper.text(13.791304347826, 35, 'me2');
ptm.attr({'font-size':9});
ptm.attr({'href':'ptm_sp.php?ptm_sp=H3R2me2'});
var t = paper.text(13.791304347826, 70, 'R');
t.attr({'font-size':16});
var num = paper.text(13.791304347826, 85, '2');
num.attr({'font-size':9});
// etc.
...这增加了每行3行。然而,它可能会增加每行一行:
var t = []; // texts
t.push([13.791304347826, 35, 'me2', 9, 'ptm_sp.php?ptm_sp=H3R2me2']);
t.push([13.791304347826, 70, 'R', 16]);
t.push([13.791304347826, 85, '2', 9]);
for(var i = 0; i < t.length; i++){
var tt = paper.text(t[i][0], t[i][1], t[i][2]);
var ta = {};
if(t[i][3]) ta['font-size'] = t[i][3];
if(t[i][4]) ta['href'] = t[i][3];
tt.attr(ta);
}
只是一个念头!在Code Review上发布代码以发展您的编码技能 - 强烈推荐! :)
相关问题
- 1. IE8中的SVG支持+
- 2. OWC不支持IE8
- 3. IE8和localStorage支持
- 4. 自上RaphaelJS节点属性在IE8
- 5. Selenium RC支持IE8吗?
- 6. IE8在具有扩展的CSS支持
- 7. IndexOf不支持在IE8浏览器
- 8. IE8支持通过@ font-face datauri支持字体吗?
- 9. IE8开箱即用支持'localStorage'
- 10. IE8支持哪些Javascript版本?
- 11. CSS定位与IE8 - 表达不支持
- 12. IE8是否支持HTML5和CSS3?
- 13. ANgular JS及其对IE8的支持
- 14. jQuery Validate支持IE8吗?我的IE8没有工作
- 15. 如何实现在ie8中支持的视频
- 16. Javascript检查在IE8中的原生占位符支持
- 17. 对象不支持此属性或方法在IE8中
- 18. jQuery在IE8中不支持.has?什么是解决方法?
- 19. 支持CSS3旋转和缩放在IE8和早期
- 20. IE8在document.write上挂起,并且“不支持该命令”
- 21. 对象不支持在IE8此属性或方法:_normalizeServiceName
- 22. jQuery - 对象不支持IE8中的此属性或方法
- 23. 在RaphaelJS中创建对象
- 24. 我如何在IE8中使用html5支持此视频浏览器
- 25. 在tomcat中是否存在支持salt的JDBCRealm的支持?
- 26. 在Firefox中WEBM不支持,但在Chrome相同WEBM支持
- 27. raphaeljs中的线宽
- 28. 支持在phantomjs
- 29. 如何在EventAggregator中支持持久性?
- 30. Internet Explorer 11企业模式除IE8外还支持IE9,IE10吗?
非常感谢解释。这种解决方法是否适用于所有浏览器,或者我必须为IE <9和其他页面制作不同的页面? – Farhat 2011-05-20 11:48:24
使用.click解决方案将适用于VML和SVG :) – Simeon 2011-05-20 19:05:23
很酷。谢谢。 :)我会投你的答案,但我没有足够的积分。 – Farhat 2011-05-20 19:38:03