Javascript 有没有办法让浏览器忽略或覆盖xml样式表处理指令?
我正试图编写一个bookmarklet来帮助一些QA测试人员在遇到问题时提交有用的调试信息。目前,我可以将window.location设置为提供此调试信息的URL,但此资源是一个带有XML样式表处理指令的XML文档 如果测试人员能够以纯文本形式查看原始XML数据,或者查看IE和Firefox的默认XML呈现,那么实际上会更方便 有人知道使用Internet Explorer或Firefox禁用或覆盖xml文档中提供的xml样式表指令的方法吗 编辑:我已经就这个问题提出了悬赏。要求:Javascript 有没有办法让浏览器忽略或覆盖xml样式表处理指令?,javascript,xml,xslt,browser,bookmarklet,Javascript,Xml,Xslt,Browser,Bookmarklet,我正试图编写一个bookmarklet来帮助一些QA测试人员在遇到问题时提交有用的调试信息。目前,我可以将window.location设置为提供此调试信息的URL,但此资源是一个带有XML样式表处理指令的XML文档 如果测试人员能够以纯文本形式查看原始XML数据,或者查看IE和Firefox的默认XML呈现,那么实际上会更方便 有人知道使用Internet Explorer或Firefox禁用或覆盖xml文档中提供的xml样式表指令的方法吗 编辑:我已经就这个问题提出了悬赏。要求: 仅客户端
- 仅客户端代码,不允许用户干预
- 需要IE和Firefox的解决方案(它们可以是不同的解决方案)
- 禁用样式表处理并将其呈现为文本是可以接受的
- 可以使用自定义XSL覆盖样式表处理
- 可以使用浏览器默认的XML样式表呈现XML
- 通过AJAX请求检索相关的XML文档
- 将XML解析为DOM(注意:DOM不是DOM)
- 遍历DOM并在浏览器中呈现所需的数据 服务器端建议 与其直接请求相关的XML文档,不如向代理脚本发出请求,该脚本从XML内容中删除所有处理指令,或者实际上删除所有您不需要的指令 而不是:
- 据我所知,没有办法做你想做的事。问题是,javascript无法从客户端xml/xsl转换读取xml的dom。就javascript而言,它是在普通的HTMLDOM上执行的
然而,根据webapp的类型,可能会有一些希望。可以使用ajax获取当前url的xml。只要没有post数据或任何其他随机性,此方法就可以正常工作。您不能在两种浏览器中都执行“查看源代码”操作吗?您可以通过在内容输出到浏览器之前使用中间步骤预处理XML来避免处理指令 客户端建议
window.location = 'http://example.com/document.xml';
使用:
此时脚本将:
document.xml
只要不必处理跨域权限,一个简单的带有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>
函数ajaxFunction()
{
var xmlHttp=new XMLHttpRequest();;
xmlHttp.onreadystatechange=函数()
{
if(xmlHttp.readyState==4)
{
警报(xmlHttp.responseText);
}
}
open(“GET”,“YOURFILE.xml”,true);
xmlHttp.send(空);
}
编辑:太糟糕了,尽管预览中的一切看起来都很好,但可点击的示例似乎把事情搞砸了。。。也许历史上的布局还不错
我听说,IE和Firefox都支持“查看源代码:”伪协议,但无法验证IE。Mac上的Firefox确实理解这一点,但Safari却不理解
将不会触发中指定的以下bookmarklet。尽管Firefox会使用一些颜色来呈现,但它不会执行它通常用于的默认转换(因此,view source的结果不会产生Firefox通常会显示的可折叠文档树):
使用Ajax获取文档时,不仅限于使用的警报
,还可以在新窗口中显示它。同样:这不会调用指定的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);
})()
javascript:(函数(){
var u='1http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml';
var w=window.open();/*立即打开弹出窗口阻止程序*/
var x=新的XMLHttpRequest();
x、 打开('GET',u,true);
x、 onreadystatechange=函数(){
如果(x.readyState==4){
w、 document.open('text/html');
/*黑客对HTML实体进行编码*/
var d=document.createElement('div');
var t=document.createTextNode(x.responseText);
d、 儿童(t);
w、 文件。写(“”)
+d.html+“”);
w、 document.close();
w、 焦点();
}
};
x、 发送(空);
})()
您可以通过编写“呈现不同的文档或指向不同的文档”来缩短测试时间。我不想在测试人员身上花费太多精力。:)但毫不奇怪,这看起来是迄今为止最好的选择。IE8和Firefox中的+1源代码查看器在显示XML方面做得非常好。如果您想更改查看源代码的应用程序(例如,更改为Notepad2),那么Firefox源代码浏览器也接受ctrl+r来重新加载页面,这可能会很方便。一个简洁的解决方案是在源浏览器中放置一个位置栏
javascript:(function(){
var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml';
var w = window.open();
w.document.location.href = 'view-source:' + u;
})()
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);
})()