在 Chrome 中加载本地 XML 文件

发布于 2024-10-30 22:59:49 字数 1649 浏览 0 评论 0原文

我必须使用 HTML5/CSS3/JavaScript 制作一个工作项目,并使用 XML 作为数据提供程序。 要求规定它必须与 Internet Explorer、Firefox、Safari 和 Chrome 兼容。 我正在 Firefox 中进行开发,所以效果很好。 Safari 的运行也很流畅,幸运的是它在新的 IE9 中运行得非常完美。

我只是在让它在 Chrome 中运行时遇到问题。 由于 Chrome 似乎支持许多新的 HTML5/CSS3 功能,因此在该浏览器中运行它应该不需要太多工作。 唯一的问题是它拒绝加载 XML 文件,并且由于从一开始就需要加载 XML 文件,因此整个内容不会加载。

经过一些研究后,我发现一些帖子指出 Chrome 不允许加载本地 XML 文件。 它应该在不使用 Apache 或其他任何东西的情况下离线工作,那么有什么方法仍然可以让它工作吗?

我根据所使用的浏览器加载 XML 的代码片段:

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
    // INTERNET EXPLORER
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        try {
            xmlDoc.async="true";
            xmlDoc.load("exercise1.xml");
        } catch(ex) {
            alert("exception");
            alert(ex.message);
        }
    }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    // MOZILLA FIREFOX
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // GOOGLE CHROME
        // load xml file
        // ????????
    }else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // OPERA
        alert("Opera is not supported as of now");
    }else if (browser.toLowerCase().indexOf('safari') > 0){
    // APPLE SAFARI
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    } else {
    // OTHER BROWSERS
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }

Firefox 和 Safari 使用外部 JavaScript 来加载 XML。 我认为实际上没有必要在此处发布该代码,因为它在这些浏览器中运行得很好。

也许我忽略了一些简单的事情,但我已经做了相当多的谷歌搜索并尝试了在 Stackoverflow 上找到的一些代码,但我仍然无法让它工作。

I have to make a project for work using HTML5/CSS3/JavaScript, and using XML as the dataprovider.
The requirements state that it has to be compatible with Internet Explorer, Firefox, Safari and Chrome.
I'm developing in Firefox, so that works just fine.
Safari works like a treat as well, and luckily it works perfect in the new IE9.

I'm only having problems getting it to run in Chrome.
As Chrome seems to support a lot of the new HTML5/CSS3 features, it shouldn't be too much work to get it running in that browser as well.
The only problem is that it refuses to load the XML file, and since this is required from the get-go, the entire thing won't load.

After doing some research, I came across posts stating that Chrome does not allow you to load local XML files.
It should work offline without using Apache or anything, so is there any way to still get it working?

The snippet of code where I load my XML depending on the browser being used:

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
    // INTERNET EXPLORER
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        try {
            xmlDoc.async="true";
            xmlDoc.load("exercise1.xml");
        } catch(ex) {
            alert("exception");
            alert(ex.message);
        }
    }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    // MOZILLA FIREFOX
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // GOOGLE CHROME
        // load xml file
        // ????????
    }else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // OPERA
        alert("Opera is not supported as of now");
    }else if (browser.toLowerCase().indexOf('safari') > 0){
    // APPLE SAFARI
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    } else {
    // OTHER BROWSERS
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }

Firefox and Safari use an external JavaScript to load the XML.
I don't think it's really necessary to post that code here, since it works perfectly fine in those browsers.

Perhaps I've overlooked something simple, but I've done a fair bit of googling and tried some code found here on Stackoverflow, and I still can't get it to work..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沦落红尘 2024-11-06 22:59:49

您可以使用 XMLHttpRequest 在 Chrome 中加载 XML 文件,如下所示:
(在 Chrome 12.0.742.112 上测试)。

    function readxml()
    {
        xmlHttp = new window.XMLHttpRequest();
        xmlHttp.open("GET","test.xml",false);
        xmlHttp.send(null);
        xmlDoc = xmlHttp.responseXML.documentElement;
    }

这是 Chrome 开发工具中生成的 xmlDoc。

readxml() result

确保服务器上有有效的 XML 文档。

<?xml version='1.0'?>

必须位于 XML 的第一行,并检查标记前是否有空格。

You can load an XML file in Chrome using XMLHttpRequest like this:
(tested on Chrome 12.0.742.112).

    function readxml()
    {
        xmlHttp = new window.XMLHttpRequest();
        xmlHttp.open("GET","test.xml",false);
        xmlHttp.send(null);
        xmlDoc = xmlHttp.responseXML.documentElement;
    }

This is the resulting xmlDoc seen in Chrome development tools.

readxml() result

Be sure to have a valid XML document on the server.

<?xml version='1.0'?>

must be on first line of XML and also check that there are no spaces before the tag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文