我正在尝试编写一个书签,以帮助一些QA测试人员在遇到问题时提交有用的调试信息。目前我可以将window.location设置为提供此调试信息的URL,但此资源是带有xml-stylesheet处理指令的XML文档。
如果测试人员能够将原始XML数据看作纯文本,或者IE和Firefox的默认XML呈现,那么实际上会更方便。
有没有人知道如何使用Internet Explorer或Firefox禁用或覆盖XML文档中提供的xml-stylesheet指令?
编辑:我在这个问题上打开了一笔赏金。要求:答案 0 :(得分:3)
编辑:太糟糕了,虽然在预览中看起来都很好,可点击的例子似乎搞砸了事情......也许历史上的布局很好。
我听说过,但无法验证IE,IE和Firefox都支持“view-source:”伪协议。 Mac上的Firefox确实理解它,但Safari却没有。
以下书签不会触发the XSLT transformation中指定的the XML。虽然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获取文档时,其中一个不仅限于使用的alert
oneporter,但也可以在新窗口中显示。同样:这不会调用指定的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);
})()
答案 1 :(得分:2)
你不能只在两个浏览器中做“查看源代码”吗?
答案 2 :(得分:2)
只要您不必处理跨域权限,使用XML源的简单ajax请求/警报框就可以解决问题。您必须在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>
答案 3 :(得分:1)
在浏览器中输出内容之前,您可以通过使用中间步骤来预处理XML来避免处理指令。
客户端建议
服务器端建议
而不是直接请求相关的XML文档,而是向代理脚本发出请求,该代理脚本从XML内容中删除所有处理指令,或者实际上所有您不想要的指令。
而不是:
window.location = 'http://example.com/document.xml';
使用:
window.location = 'http://example.com/proxy/';
http://example.com/proxy/的脚本会:
document.xml
答案 4 :(得分:0)
据我所知,没有办法做你想做的事。问题是,javascript无法从客户端xml / xsl转换中读取xml的dom。就javascript而言,它正在正常的html dom上执行。
但是,根据webapp的类型,可能会有一些希望。您可以使用ajax获取当前URL的xml。只要没有发布数据或任何其他随机性,此方法应该可以正常工作。