javascript - "Read"XML 与 JavaScript

标签 javascript google-chrome

仍在使用 Chrome 扩展程序,当我想从 XML 文件中获取一些信息时遇到了一些问题。 XML 的外观如下:

<?xml version='1.0' encoding='utf8'?>
<objects>
    <url>
        <domain>...</domain>
        <nb_clics>...</nb_clics>
        <alias>...</alias>
        <title>...</title>
        <source>...</source>
        <description />
    </url>
</objects>

我已经尝试过,但没有结果:

<html>
    <head>
        <style>
            body {
                width:160px;
            }
            p {
                font-weight:bold;
                margin-bottom:0;
            }
        </style>
    </head>
    <script type="text/javascript">
        function DOMImplementation(sUrl, fCallback) {
            var dom;
            if(window.ActiveXObject) {
                dom = new ActiveXObject("Microsoft.XMLDOM");
                dom.onreadystatechange = function() {
                    if(dom.readyState == 4) {
                        fCallback(dom);
                    }
                };
            }
            else if(document.implementation && document.implementation.createDocument) {
                dom = document.implementation.createDocument("", "", null);
                dom.onload = function() { 
                    fCallback(dom); 
                }
            }   
            else {
                alert("ERROR");
                return;
            } 
            dom.load(sUrl);
        }

        function shrimit() {
            var nicknick = localStorage["nick_name"];
            var apiapi = localStorage["api_key"];
            var yourc = document.getElementById("your");

            chrome.tabs.getSelected(null,function(tab) {
                var tablink = tab.url;
                if(!nicknick || !apiapi){
                    yourc.setAttribute("value","Set the options");
                } else {
                    DOMImplementation("post.xml", getData);
                    function getData(oData) {
                        var tablink2 = oData.getElementsByTagName("alias")[0].firstChild.data;
                        yourc.setAttribute("value",tablink2);
                    }
                }
            });
        }
    </script>
    <body onload="shrimit()">
        <input id="your" name="your" type="text" value="" />
    </body>
</html>

你能帮我吗?

最佳答案

使用XMLHttpRequest加载XML文件。这是跨浏览器标准化且可靠的。 document.implementation.createDocument ... load 不是。

(您可能会得到一个 HTMLDocument,而不是纯 XML 文档。通常在回退到 document.implementation.createDocument 之前先嗅探 DOMParser。另外 createDocument( '', '', null); 无效:不能有空字符串根元素名称。请使用 createDocument(null, 'name', null)。此外,最后,最好不要使用名称 DOMImplementation 因为这是 Chrome 和其他一些内置接口(interface)/类的名称。)

最后,在 else 子句中使用 function 语句在 JavaScript 中是无效的。浏览器倾向于允许它,但结果各不相同。要么在顶层声明函数,要么使用内联函数表达式。

关于javascript - "Read"XML 与 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1982774/

相关文章:

html - Flash 在 Chrome、FF、Safari 上不工作,但在 IE 上工作

css - 无法让 CSS 变量在 Chrome 34 中工作

javascript - 对话框不适合多个选择文件的屏幕

javascript - twitter-bootstrap-wizard 错误切换步骤只需滚动

javascript - PHP 5.4.16 DOMDocument 移除了部分 Javascript

javascript - Ripple 模拟器 + Android 项目与 PhoneGap

javascript - 如何用正则表达式替换图像 URL(纯文本)

javascript - ol.style.stroke 中的不同颜色边框底部

google-chrome - E/launcher - 未知错误 : Chrome failed to start: exited abnormally, Protractor

css - Chrome 没有正确覆盖 flex box 的 justify-content