2012-09-26 142 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