2012-09-26 177 views
0

如何使用(JavaScript和/或)FirefoxDriver测试window.print()方法是否被覆盖?如何测试window.print()是否被覆盖?

它可以禁用页面上的所有打印按钮,像这样:

window.print = function() { alert("Bazinga") } 

有了这个正常的“打印”类似以下链接不再工作:

<a onclick="window.print()">....</a> 

我需要检查一个window.print()调用是否执行原始打印对话框。

也许可以在FirefoxWebdriver中注入一些JavaScript?

+0

只是好奇,但你打算如何应用这个? – Neil

+0

@你的意思是如何将JavaScript注入到它呢? – d0x

+0

不,我的意思是这个问题的答案将如何为您服务?我很难想象这种应用,就这些。 – Neil

回答

2

一个fiddle基于卢卡的答案,克里斯托夫的评论。即使在IE6中,该功能也会检测原生打印对话框。

function isNativePrint() { 
    var isNative = false; 
    try { 
     if (window.print.toString().indexOf('[native code]') > -1) isNative = true; 
    } catch (e) { 
     isNative = true; 
    } 
    return isNative; 
} 
+0

感谢@Luca这种优雅的方式来检测本机功能。 –

3

由于window.print是土生土长的功能,您可以:我创建

if(window.print.toString().indexOf('[native code]') > -1) { 
//native 
} 
+0

看起来不错,虽然IE似乎不支持本地函数上的'toString()'。然而'window.print'对我产生了期望的结果。 – Christoph