【问题标题】:JSON.stringify output to div in pretty print wayJSON.stringify 以漂亮的打印方式输出到 div
【发布时间】:2013-05-27 14:10:06
【问题描述】:

JSON.stringify一个json对象由

result = JSON.stringify(message, my_json, 2)

上面参数中的2 应该可以漂亮地打印结果。如果我执行alert(result) 之类的操作,它会执行此操作。但是,我想通过将其附加到 div 中来将其输出给用户。当我这样做时,我只会显示一条线。 (我认为它不起作用,因为中断和空格没有被解释为 html?)

{ "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 }

有没有办法以漂亮的打印方式将JSON.stringify 的结果输出到 div?

【问题讨论】:

标签: javascript html json pretty-print stringify


【解决方案1】:

请使用<pre>标签

演示:http://jsfiddle.net/K83cK/

var data = {
  "data": {
    "x": "1",
    "y": "1",
    "url": "http://url.com"
  },
  "event": "start",
  "show": 1,
  "id": 50
}


document.getElementById("json").textContent = JSON.stringify(data, undefined, 2);
<pre id="json"></pre>

【讨论】:

  • pre 告诉浏览器引擎里面的内容是预先格式化的,不需要任何修改就可以显示出来。所以浏览器不会删除空格、新行等。code 是为了使其更具语义性,并表示里面的内容是一个代码 sn-p。它与格式无关。建议这样使用,<pre><code> /* Your code snippet here. */ </code></pre>
  • 为了避免长行从pre标签的子容器中出来,应该在pre标签中添加以下css规则:stackoverflow.com/a/248013/883083
  • 但是如果我在上面的 js 中使用 "array": [1,2,3,4] 在 data 中。它将数组拆分为多行。为什么?
  • @iGod:这就是stringify 的格式。您可以使用“替换器”函数覆盖它,该函数是第二个参数,如下所示。 JSON.stringify({name: "Diode", details: {age: 123, place: "xyz"}, list: [1, 2, 3, 4, 5]},function(k,v){ if(v instanceof Array) return JSON.stringify(v); return v; },2);
  • @Diode 我还要提一下,最好使用.textContent 而不是.innerHTML,因为它会避开可能在json 中的危险html:developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/…
【解决方案2】:

确保 JSON 输出位于 <pre> 标记中。

【讨论】:

    【解决方案3】:

    我的提议基于:

    • 将每个“\n”(换行符)替换为
    • 用   替换每个空格

    var x = { "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 };
    
    
    document.querySelector('#newquote').innerHTML = JSON.stringify(x, null, 6)
         .replace(/\n( *)/g, function (match, p1) {
             return '<br>' + '&nbsp;'.repeat(p1.length);
         });
    &lt;div id="newquote"&gt;&lt;/div&gt;

    【讨论】:

      【解决方案4】:

      如果您的 &lt;pre&gt; 标记显示单行 JSON,因为这就是已经提供字符串的方式(通过 api 或您无法控制的某些功能/页面),您可以像这样重新格式化它:

      HTML:

      <pre id="json">{"some":"JSON string"}</pre>
      

      JavaScript:

          (function() {
              var element = document.getElementById("json");
              var obj = JSON.parse(element.innerText);
              element.innerHTML = JSON.stringify(obj, undefined, 2);
          })();
      

      或 jQuery:

          $(formatJson);
      
          function formatJson() {
              var element = $("#json");
              var obj = JSON.parse(element.text());
              element.html(JSON.stringify(obj, undefined, 2));
          }
      

      【讨论】:

        【解决方案5】:

        完全披露我是这个包的作者,但另一种以可读方式输出 JSON 或 JavaScript 对象的方法是nodedumphttps://github.com/ragamufin/nodedump

        【讨论】:

          【解决方案6】:

          考虑您的 REST API 返回:

          {"Intent":{"Command":"search","SubIntent":null}}
          

          然后您可以执行以下操作,以漂亮的格式打印它:

          <pre id="ciResponseText">Output will de displayed here.</pre>   
          
          var ciResponseText = document.getElementById('ciResponseText');
          var obj = JSON.parse(http.response);
          ciResponseText.innerHTML = JSON.stringify(obj, undefined, 2);   
          

          【讨论】:

            【解决方案7】:

            很多人对这些问题做出了非常奇怪的回答,这使得工作量大大增加。

            执行此操作的最简单方法包括以下内容

            1. 使用 JSON.parse(value) 解析 JSON 字符串
            2. 将已解析的字符串字符串化为一个不错的格式 - JSON.stringify(input,undefined,2)
            3. 将输出设置为第 2 步的值。

            在实际代码中,一个示例将是(将所有步骤组合在一起):

                var input = document.getElementById("input").value;
                document.getElementById("output").value = JSON.stringify(JSON.parse(input),undefined,2);
            

            output.value 将是您想要显示美化 JSON 的区域。

            【讨论】:

              【解决方案8】:

              使用 JSX 打印组件的状态

              render() {
                return (
                  <div>
                    <h1>Adopt Me!</h1>
                    <pre>
                      <code>{JSON.stringify(this.state, null, 4)}</code>
                    </pre>
                  </div>
                );
              }
              

              stringify

              【讨论】:

                【解决方案9】:

                如果这真的是为用户准备的,比仅仅输出文本更好,您可以使用类似https://github.com/padolsey/prettyprint.js 的库将其输出为 HTML 表格。

                【讨论】:

                  【解决方案10】:

                  使用样式white-space: pre &lt;pre&gt; 标记也会修改可能不受欢迎的文本格式。

                  【讨论】:

                    【解决方案11】:

                    你可以试试这个仓库:https://github.com/amelki/json-pretty-html

                    【讨论】:

                      【解决方案12】:

                      它适用于 Laravel,Codeigniter html: &lt;pre class="jsonPre"&gt; &lt;/pre&gt;

                      控制器:从控制器返回 JSON 值,就像

                      return json_encode($data, JSON_PRETTY_PRINT);

                      在脚本中: &lt;script&gt; $('.jsonPre').html(result); &lt;/script&gt;

                      结果是

                      【讨论】:

                        【解决方案13】:

                        如果你使用 React,你也可以使用 react-json-tree 包。

                        我为它创建了一个像下面这样接受数据道具的组件。

                        import React from 'react';
                        import JSONTree from 'react-json-tree'
                        import './style.css';
                        
                        const theme = {
                            scheme: 'monokai',
                            base00: '#272822',
                            base01: '#383830',
                            base02: '#49483e',
                            base03: '#75715e',
                            base04: '#a59f85',
                            base05: '#f8f8f2',
                            base06: '#f5f4f1',
                            base07: '#f9f8f5',
                            base08: '#f92672',
                            base09: '#fd971f',
                            base0A: '#f4bf75',
                            base0B: '#a6e22e',
                            base0C: '#a1efe4',
                            base0D: '#66d9ef',
                            base0E: '#ae81ff',
                            base0F: '#cc6633',
                        };
                        
                        const TreeView = (props) => {
                        
                            return (
                                <div className="tree-container">
                                    <JSONTree
                                        data={props.data}
                                        theme={theme}
                                        invertTheme={true}
                                        hideRoot
                                        labelRenderer={([key]) => {
                                            return <strong>{key}:</strong>
                                        }}
                                        valueRenderer={(valueAsString, value) => {
                                            return <span className="capitalize">{value}</span>;
                                        }}
                                        getItemString={() => ''}
                                    />
                                </div>
                            );
                        }
                        
                        export default TreeView;
                        

                        然后我在导入组件后在下面的 html 元素中使用它。

                        <div>
                         <TreeView data={s.value} />
                        </div>
                        

                        【讨论】:

                          【解决方案14】:

                          想要展示可折叠json的可以使用renderjson

                          这是通过在 html 中嵌入渲染 js javascript 的示例

                          <!DOCTYPE html>
                          <html>
                          
                          <head>
                              <script type="application/javascript">
                                  // Copyright © 2013-2014 David Caldwell <david@porkrind.org>
                                  //
                                  // Permission to use, copy, modify, and/or distribute this software for any
                                  // purpose with or without fee is hereby granted, provided that the above
                                  // copyright notice and this permission notice appear in all copies.
                                  //
                                  // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                                  // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                                  // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
                                  // SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                                  // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
                                  // OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
                                  // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                          
                                  // Usage
                                  // -----
                                  // The module exports one entry point, the `renderjson()` function. It takes in
                                  // the JSON you want to render as a single argument and returns an HTML
                                  // element.
                                  //
                                  // Options
                                  // -------
                                  // renderjson.set_icons("+", "-")
                                  //   This Allows you to override the disclosure icons.
                                  //
                                  // renderjson.set_show_to_level(level)
                                  //   Pass the number of levels to expand when rendering. The default is 0, which
                                  //   starts with everything collapsed. As a special case, if level is the string
                                  //   "all" then it will start with everything expanded.
                                  //
                                  // renderjson.set_max_string_length(length)
                                  //   Strings will be truncated and made expandable if they are longer than
                                  //   `length`. As a special case, if `length` is the string "none" then
                                  //   there will be no truncation. The default is "none".
                                  //
                                  // renderjson.set_sort_objects(sort_bool)
                                  //   Sort objects by key (default: false)
                                  //
                                  // Theming
                                  // -------
                                  // The HTML output uses a number of classes so that you can theme it the way
                                  // you'd like:
                                  //     .disclosure    ("⊕", "⊖")
                                  //     .syntax        (",", ":", "{", "}", "[", "]")
                                  //     .string        (includes quotes)
                                  //     .number
                                  //     .boolean
                                  //     .key           (object key)
                                  //     .keyword       ("null", "undefined")
                                  //     .object.syntax ("{", "}")
                                  //     .array.syntax  ("[", "]")
                          
                                  var module;
                                  (module || {}).exports = renderjson = (function () {
                                      var themetext = function (/* [class, text]+ */) {
                                          var spans = [];
                                          while (arguments.length)
                                              spans.push(append(span(Array.prototype.shift.call(arguments)),
                                                  text(Array.prototype.shift.call(arguments))));
                                          return spans;
                                      };
                                      var append = function (/* el, ... */) {
                                          var el = Array.prototype.shift.call(arguments);
                                          for (var a = 0; a < arguments.length; a++)
                                              if (arguments[a].constructor == Array)
                                                  append.apply(this, [el].concat(arguments[a]));
                                              else
                                                  el.appendChild(arguments[a]);
                                          return el;
                                      };
                                      var prepend = function (el, child) {
                                          el.insertBefore(child, el.firstChild);
                                          return el;
                                      }
                                      var isempty = function (obj) {
                                          for (var k in obj) if (obj.hasOwnProperty(k)) return false;
                                          return true;
                                      }
                                      var text = function (txt) { return document.createTextNode(txt) };
                                      var div = function () { return document.createElement("div") };
                                      var span = function (classname) {
                                          var s = document.createElement("span");
                                          if (classname) s.className = classname;
                                          return s;
                                      };
                                      var A = function A(txt, classname, callback) {
                                          var a = document.createElement("a");
                                          if (classname) a.className = classname;
                                          a.appendChild(text(txt));
                                          a.href = '#';
                                          a.onclick = function () { callback(); return false; };
                                          return a;
                                      };
                          
                                      function _renderjson(json, indent, dont_indent, show_level, max_string, sort_objects) {
                                          var my_indent = dont_indent ? "" : indent;
                          
                                          var disclosure = function (open, placeholder, close, type, builder) {
                                              var content;
                                              var empty = span(type);
                                              var show = function () {
                                                  if (!content) append(empty.parentNode,
                                                      content = prepend(builder(),
                                                          A(renderjson.hide, "disclosure",
                                                              function () {
                                                                  content.style.display = "none";
                                                                  empty.style.display = "inline";
                                                              })));
                                                  content.style.display = "inline";
                                                  empty.style.display = "none";
                                              };
                                              append(empty,
                                                  A(renderjson.show, "disclosure", show),
                                                  themetext(type + " syntax", open),
                                                  A(placeholder, null, show),
                                                  themetext(type + " syntax", close));
                          
                                              var el = append(span(), text(my_indent.slice(0, -1)), empty);
                                              if (show_level > 0)
                                                  show();
                                              return el;
                                          };
                          
                                          if (json === null) return themetext(null, my_indent, "keyword", "null");
                                          if (json === void 0) return themetext(null, my_indent, "keyword", "undefined");
                          
                                          if (typeof (json) == "string" && json.length > max_string)
                                              return disclosure('"', json.substr(0, max_string) + " ...", '"', "string", function () {
                                                  return append(span("string"), themetext(null, my_indent, "string", JSON.stringify(json)));
                                              });
                          
                                          if (typeof (json) != "object") // Strings, numbers and bools
                                              return themetext(null, my_indent, typeof (json), JSON.stringify(json));
                          
                                          if (json.constructor == Array) {
                                              if (json.length == 0) return themetext(null, my_indent, "array syntax", "[]");
                          
                                              return disclosure("[", " ... ", "]", "array", function () {
                                                  var as = append(span("array"), themetext("array syntax", "[", null, "\n"));
                                                  for (var i = 0; i < json.length; i++)
                                                      append(as,
                                                          _renderjson(json[i], indent + "    ", false, show_level - 1, max_string, sort_objects),
                                                          i != json.length - 1 ? themetext("syntax", ",") : [],
                                                          text("\n"));
                                                  append(as, themetext(null, indent, "array syntax", "]"));
                                                  return as;
                                              });
                                          }
                          
                                          // object
                                          if (isempty(json))
                                              return themetext(null, my_indent, "object syntax", "{}");
                          
                                          return disclosure("{", "...", "}", "object", function () {
                                              var os = append(span("object"), themetext("object syntax", "{", null, "\n"));
                                              for (var k in json) var last = k;
                                              var keys = Object.keys(json);
                                              if (sort_objects)
                                                  keys = keys.sort();
                                              for (var i in keys) {
                                                  var k = keys[i];
                                                  append(os, themetext(null, indent + "    ", "key", '"' + k + '"', "object syntax", ': '),
                                                      _renderjson(json[k], indent + "    ", true, show_level - 1, max_string, sort_objects),
                                                      k != last ? themetext("syntax", ",") : [],
                                                      text("\n"));
                                              }
                                              append(os, themetext(null, indent, "object syntax", "}"));
                                              return os;
                                          });
                                      }
                          
                                      var renderjson = function renderjson(json) {
                                          var pre = append(document.createElement("pre"), _renderjson(json, "", false, renderjson.show_to_level, renderjson.max_string_length, renderjson.sort_objects));
                                          pre.className = "renderjson";
                                          return pre;
                                      }
                                      renderjson.set_icons = function (show, hide) {
                                          renderjson.show = show;
                                          renderjson.hide = hide;
                                          return renderjson;
                                      };
                                      renderjson.set_show_to_level = function (level) {
                                          renderjson.show_to_level = typeof level == "string" &&
                                              level.toLowerCase() === "all" ? Number.MAX_VALUE
                                              : level;
                                          return renderjson;
                                      };
                                      renderjson.set_max_string_length = function (length) {
                                          renderjson.max_string_length = typeof length == "string" &&
                                              length.toLowerCase() === "none" ? Number.MAX_VALUE
                                              : length;
                                          return renderjson;
                                      };
                                      renderjson.set_sort_objects = function (sort_bool) {
                                          renderjson.sort_objects = sort_bool;
                                          return renderjson;
                                      };
                                      // Backwards compatiblity. Use set_show_to_level() for new code.
                                      renderjson.set_show_by_default = function (show) {
                                          renderjson.show_to_level = show ? Number.MAX_VALUE : 0;
                                          return renderjson;
                                      };
                                      renderjson.set_icons('⊕', '⊖');
                                      renderjson.set_show_by_default(false);
                                      renderjson.set_sort_objects(false);
                                      renderjson.set_max_string_length("none");
                                      return renderjson;
                                  })();
                              </script>
                          
                          </head>
                          
                          
                          <body>
                              <div id="dest"></div>
                          </body>
                          <script type="application/javascript">
                              document.getElementById("dest").appendChild(
                                  renderjson.set_show_by_default(true)
                                      //.set_show_to_level(2)
                                      //.set_sort_objects(true)
                                      //.set_icons('+', '-')
                                      .set_max_string_length(100)
                                      ([
                                          {
                                              "glossary": {
                                                  "title": "example glossary",
                                                  "GlossDiv": {
                                                      "title": "S",
                                                      "GlossList": {
                                                          "GlossEntry": {
                                                              "ID": "SGML",
                                                              "SortAs": "SGML",
                                                              "GlossTerm": "Standard Generalized Markup Language",
                                                              "Acronym": "SGML",
                                                              "Abbrev": "ISO 8879:1986",
                                                              "GlossDef": {
                                                                  "para": "A meta-markup language, used to create markup languages such as DocBook.",
                                                                  "GlossSeeAlso": ["GML", "XML"]
                                                              },
                                                              "GlossSee": "markup"
                                                          }
                                                      }
                                                  }
                                              }
                                          },
                                          {
                                              "menu": {
                                                  "id": "file",
                                                  "value": "File",
                                                  "popup": {
                                                      "menuitem": [
                                                          { "value": "New", "onclick": "CreateNewDoc()" },
                                                          { "value": "Open", "onclick": "OpenDoc()" },
                                                          { "value": "Close", "onclick": "CloseDoc()" }
                                                      ]
                                                  }
                                              }
                                          },
                          
                                          {
                                              "widget": {
                                                  "debug": "on",
                                                  "window": {
                                                      "title": "Sample Konfabulator Widget",
                                                      "name": "main_window",
                                                      "width": 500,
                                                      "height": 500
                                                  },
                                                  "image": {
                                                      "src": "Images/Sun.png",
                                                      "name": "sun1",
                                                      "hOffset": 250,
                                                      "vOffset": 250,
                                                      "alignment": "center"
                                                  },
                                                  "text": {
                                                      "data": "Click Here",
                                                      "size": 36,
                                                      "style": "bold",
                                                      "name": "text1",
                                                      "hOffset": 250,
                                                      "vOffset": 100,
                                                      "alignment": "center",
                                                      "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                                                  }
                                              }
                                          },
                          
                                          {
                                              "web-app": {
                                                  "servlet": [
                                                      {
                                                          "servlet-name": "cofaxCDS",
                                                          "servlet-class": "org.cofax.cds.CDSServlet",
                                                          "init-param": {
                                                              "configGlossary:installationAt": "Philadelphia, PA",
                                                              "configGlossary:adminEmail": "ksm@pobox.com",
                                                              "configGlossary:poweredBy": "Cofax",
                                                              "configGlossary:poweredByIcon": "/images/cofax.gif",
                                                              "configGlossary:staticPath": "/content/static",
                                                              "templateProcessorClass": "org.cofax.WysiwygTemplate",
                                                              "templateLoaderClass": "org.cofax.FilesTemplateLoader",
                                                              "templatePath": "templates",
                                                              "templateOverridePath": "",
                                                              "defaultListTemplate": "listTemplate.htm",
                                                              "defaultFileTemplate": "articleTemplate.htm",
                                                              "useJSP": false,
                                                              "jspListTemplate": "listTemplate.jsp",
                                                              "jspFileTemplate": "articleTemplate.jsp",
                                                              "cachePackageTagsTrack": 200,
                                                              "cachePackageTagsStore": 200,
                                                              "cachePackageTagsRefresh": 60,
                                                              "cacheTemplatesTrack": 100,
                                                              "cacheTemplatesStore": 50,
                                                              "cacheTemplatesRefresh": 15,
                                                              "cachePagesTrack": 200,
                                                              "cachePagesStore": 100,
                                                              "cachePagesRefresh": 10,
                                                              "cachePagesDirtyRead": 10,
                                                              "searchEngineListTemplate": "forSearchEnginesList.htm",
                                                              "searchEngineFileTemplate": "forSearchEngines.htm",
                                                              "searchEngineRobotsDb": "WEB-INF/robots.db",
                                                              "useDataStore": true,
                                                              "dataStoreClass": "org.cofax.SqlDataStore",
                                                              "redirectionClass": "org.cofax.SqlRedirection",
                                                              "dataStoreName": "cofax",
                                                              "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
                                                              "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
                                                              "dataStoreUser": "sa",
                                                              "dataStorePassword": "dataStoreTestQuery",
                                                              "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
                                                              "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
                                                              "dataStoreInitConns": 10,
                                                              "dataStoreMaxConns": 100,
                                                              "dataStoreConnUsageLimit": 100,
                                                              "dataStoreLogLevel": "debug",
                                                              "maxUrlLength": 500
                                                          }
                                                      },
                                                      {
                                                          "servlet-name": "cofaxEmail",
                                                          "servlet-class": "org.cofax.cds.EmailServlet",
                                                          "init-param": {
                                                              "mailHost": "mail1",
                                                              "mailHostOverride": "mail2"
                                                          }
                                                      },
                                                      {
                                                          "servlet-name": "cofaxAdmin",
                                                          "servlet-class": "org.cofax.cds.AdminServlet"
                                                      },
                          
                                                      {
                                                          "servlet-name": "fileServlet",
                                                          "servlet-class": "org.cofax.cds.FileServlet"
                                                      },
                                                      {
                                                          "servlet-name": "cofaxTools",
                                                          "servlet-class": "org.cofax.cms.CofaxToolsServlet",
                                                          "init-param": {
                                                              "templatePath": "toolstemplates/",
                                                              "log": 1,
                                                              "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
                                                              "logMaxSize": "",
                                                              "dataLog": 1,
                                                              "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
                                                              "dataLogMaxSize": "",
                                                              "removePageCache": "/content/admin/remove?cache=pages&id=",
                                                              "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
                                                              "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
                                                              "lookInContext": 1,
                                                              "adminGroupID": 4,
                                                              "betaServer": true
                                                          }
                                                      }],
                                                  "servlet-mapping": {
                                                      "cofaxCDS": "/",
                                                      "cofaxEmail": "/cofaxutil/aemail/*",
                                                      "cofaxAdmin": "/admin/*",
                                                      "fileServlet": "/static/*",
                                                      "cofaxTools": "/tools/*"
                                                  },
                          
                                                  "taglib": {
                                                      "taglib-uri": "cofax.tld",
                                                      "taglib-location": "/WEB-INF/tlds/cofax.tld"
                                                  }
                                              }
                                          },
                          
                                          {
                                              "menu": {
                                                  "header": "SVG Viewer",
                                                  "items": [
                                                      { "id": "Open" },
                                                      { "id": "OpenNew", "label": "Open New" },
                                                      null,
                                                      { "id": "ZoomIn", "label": "Zoom In" },
                                                      { "id": "ZoomOut", "label": "Zoom Out" },
                                                      { "id": "OriginalView", "label": "Original View" },
                                                      null,
                                                      { "id": "Quality" },
                                                      { "id": "Pause" },
                                                      { "id": "Mute" },
                                                      null,
                                                      { "id": "Find", "label": "Find..." },
                                                      { "id": "FindAgain", "label": "Find Again" },
                                                      { "id": "Copy" },
                                                      { "id": "CopyAgain", "label": "Copy Again" },
                                                      { "id": "CopySVG", "label": "Copy SVG" },
                                                      { "id": "ViewSVG", "label": "View SVG" },
                                                      { "id": "ViewSource", "label": "View Source" },
                                                      { "id": "SaveAs", "label": "Save As" },
                                                      null,
                                                      { "id": "Help" },
                                                      { "id": "About", "label": "About Adobe CVG Viewer..." }
                                                  ]
                                              }
                                          },
                                          {
                                              "empty": {
                                                  "object": {},
                                                  "array": []
                                              }
                                          },
                                          {
                                              "really_long": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla posuere, orci quis laoreet luctus, nunc neque condimentum arcu, sed tristique sem erat non libero. Morbi et velit non justo rutrum pulvinar. Nam pellentesque laoreet lacus eget sollicitudin. Quisque maximus mattis nisl, eget tempor nisi pulvinar et. Nullam accumsan sapien sapien, non gravida turpis consectetur non. Etiam in vestibulum neque. Donec porta dui sit amet turpis efficitur laoreet. Duis eu convallis ex, vel volutpat lacus. Donec sit amet nunc a orci fermentum luctus."
                                          }
                                      ]));
                          </script>
                          
                          </html>
                          

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2011-03-21
                            • 2016-08-26
                            • 1970-01-01
                            • 2020-04-17
                            • 2016-08-16
                            相关资源
                            最近更新 更多