2009-04-22 24 views
5

我正在嘗試編寫一個小書籤,以幫助一些QA測試人員在遇到問題時提交有用的調試信息。目前我可以將window.location設置爲提供此調試信息的URL,但此資源是一個帶有xml樣式表處理指令的XML文檔。有沒有辦法讓瀏覽器忽略或重寫XML樣式表處理指令?

如果測試人員能夠將原始XML數據看作純文本,或者對IE和Firefox默認的XML呈現,那實際上會更方便。

有誰知道使用Internet Explorer或Firefox禁用或覆蓋XML文檔中提供的xml-stylesheet指令的方法嗎?

編輯:我已經打開了這個問題的賞金。要求:只有

  • 客戶端代碼,無需用戶干預允許兩個IE和Firefox
  • 解決方案所需的(它們可以是不同的解決方案)
  • 禁用樣式表的處理和渲染它作爲文本是可以接受的
  • 與自定義XSL
  • 重寫樣式表的處理是可接受的
  • 渲染與瀏覽器的默認XML樣式表將XML是可接受

回答

3

編輯:太糟糕了,但一切似乎在預覽罰款,可點擊的例子似乎搞砸了的東西......也許佈局是在歷史的罰款。

我聽說過,但無法驗證IE,IE和Firefox都支持「view-source:」僞協議。 Mac上的Firefox的確瞭解它,但Safari不。

以下小書籤不會觸發the XML中指定的the XSLT transformation。儘管Firefox會使用一些顏色來渲染它,但它不會執行它通常用於XML without any XSLT的默認轉換(因此,view-source的結果不會產生Firefox通常會顯示的可摺疊文檔樹):

javascript:(function(){ 
    var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml'; 
    var w = window.open(); 
    w.document.location.href = 'view-source:' + u; 
})() 

使用Ajax提取文檔時,不限於使用alertoneporter,但也可以在新窗口中顯示它。再次說明:這將不會調用指定的XSLT轉換:

javascript:(function(){ 
    var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml'; 

    var w = window.open(); /* open right away for popup blockers */ 

    var x = new XMLHttpRequest(); 
    x.open('GET', u, true); 
    x.onreadystatechange = function(){ 
    if(x.readyState == 4){ 
     w.document.open('text/html'); 
     /* hack to encode HTML entities */ 
     var d = document.createElement('div'); 
     var t = document.createTextNode(x.responseText); 
     d.appendChild(t); 
     w.document.write('<html><body><pre>' 
      + d.innerHTML + '</pre></body></html>'); 
     w.document.close(); 
     w.focus(); 
    } 
    }; 
    x.send(null); 
})() 
0

據我所知,沒有辦法做你想做的事情。問題是,javascript無法從客戶端xml/xsl轉換中讀取xml的dom。就javascript而言,它在正常的html dom上執行。

但是,根據webapp的類型,可能會有一些希望。你可以使用ajax來獲取當前url的xml。只要沒有後期數據或任何其他隨機性,這種方法應該可以正常工作。

2

難道你不能只在這兩個瀏覽器中「查看源代碼」?

+1

我不想在測試人員上投入太多精力。 :)但毫不奇怪,這看起來像迄今爲止最好的選擇。 – 2009-04-27 13:01:46

+0

IE8和Firefox中的+1源瀏覽器在顯示XML方面做得非常好。 – 2009-05-01 21:57:30

1

在瀏覽器中輸出內容之前,您可以通過使用中間步驟來預處理XML來避免處理指令。

客戶端建議

  1. 經由AJAX請求
  2. 檢索相關的XML文檔解析XML成DOM(注:一個 DOM不 DOM)
  3. 遍歷DOM並在瀏覽器中呈現所需的數據

服務器端建議

而是直接請求相關的XML文檔,做一個請求,而不是到從XML內容刪除了所有處理指令,或者實際上所有你不想要一個代理腳本。

相反的:

window.location = 'http://example.com/document.xml'; 

使用:

window.location = 'http://example.com/proxy/'; 


在腳本http://example.com/proxy/將:

  1. 負載document.xml
  2. 使用一切必要去除凝固酶原從XML內容
  3. 輸出的XML內容
2

只要你不會有處理跨域權限,與XML源會做的伎倆一個簡單的Ajax請求/提示框ssing指令。你將不得不添加一點到xmlHttp聲明,以使其與IE兼容。

<html> 
<body> 

<script language="JavaScript"> 
function ajaxFunction() 
{ 

var xmlHttp=new XMLHttpRequest();; 

    xmlHttp.onreadystatechange=function() 
    { 
    if(xmlHttp.readyState==4) 
     { 
     alert(xmlHttp.responseText); 
     } 
    } 
    xmlHttp.open("GET","YOURFILE.xml",true); 
    xmlHttp.send(null); 

} 
</script> 

<a href="#" onclick="JavaScript:ajaxFunction()">Errors</a> 

</body> 
</html> 
相關問題