Javascript 带高亮显示的JSON漂亮打印
我想在网页上漂亮地打印JSON,并突出显示其中的一些文本/行 理想情况下,我搜索的是一个IFRAME服务,我可以链接到该服务和URL,其中JSON被加载并显示为HTML,但我想指定一个搜索字符串,该字符串应该突出显示,或者包含搜索字符串的整行应该突出显示。JSON是公共的,因此没有隐私问题Javascript 带高亮显示的JSON漂亮打印,javascript,json,highlighting,jsonp,jquery,Javascript,Json,Highlighting,Jsonp,Jquery,我想在网页上漂亮地打印JSON,并突出显示其中的一些文本/行 理想情况下,我搜索的是一个IFRAME服务,我可以链接到该服务和URL,其中JSON被加载并显示为HTML,但我想指定一个搜索字符串,该字符串应该突出显示,或者包含搜索字符串的整行应该突出显示。JSON是公共的,因此没有隐私问题 如果没有这样的服务,是否有支持高亮显示的Javscript库?更多地关注您关于iFrame的问题-这是一个很好的解决方案。如果域名不相同,则不可能在iframe中执行您想要的操作。然而,在这种情况下,有相同原
如果没有这样的服务,是否有支持高亮显示的Javscript库?更多地关注您关于iFrame的问题-这是一个很好的解决方案。如果域名不相同,则不可能在iframe中执行您想要的操作。然而,在这种情况下,有相同原产地的政策可以帮助您
理想情况下,您从支持中获取的服务不需要处理iFrame,并且可以使用json响应做您喜欢做的事情,而不用担心同源策略 正如在中提到的,您可以使用来应用语法高亮显示,尽管您不能高亮显示特定的行(根据我目前的发现)。对于这个例子,我将使用 对于HTML,您将有:
<pre id="jsonCode" class="prettyprint lang-json"></pre>
您可以在此处查看工作演示:
如果你真的决定使用美容,看看他们的指南
更新 要完全回答您的问题,可以很容易地通过使用指定的类将文本包装在
标记中,为某些文本添加高亮显示。我在前一个例子的基础上又总结了另一个例子:
简言之:
。突出显示{
背景色:#ff0;
}
$(“#搜索”).keyup(函数(){
var search=$('#search').val();
if(jsonString.match(搜索)){
var regex=new RegExp(搜索“g”);
突出显示的变量=“”+搜索+“”;
var newJsonString=jsonString.replace(regex,突出显示);
$('#jsonCode').html(prettyPrintOne(newJsonString));
}否则{
$('#jsonCode').html(prettyPrintOne(jsonString));
}
});
如果要删除动态功能并在加载时突出显示,只需将逻辑从事件侦听器中移出:
var highlight=function(jsonString,searchFor){
var regex=new RegExp(搜索'g');
突出显示的变量=“”+搜索+“”;
var newJsonString=jsonString.replace(regex,突出显示);
返回prettyPrintOne(newJsonString);
};
并在用代码填充区域之前调用它
$('#jsonCode').html(突出显示(jsonString,'X-RateLimit');
演示:更多地关注您关于iFrame的问题-这是一个很好的例子。如果域名不相同,则不可能在iframe中执行您想要的操作。然而,在这种情况下,有相同原产地的政策可以帮助您
理想情况下,您从支持中获取的服务不需要处理iFrame,并且可以使用json响应做您喜欢做的事情,而不用担心同源策略 正如在中提到的,您可以使用来应用语法高亮显示,尽管您不能高亮显示特定的行(根据我目前的发现)。对于这个例子,我将使用 对于HTML,您将有:
<pre id="jsonCode" class="prettyprint lang-json"></pre>
您可以在此处查看工作演示:
如果你真的决定使用美容,看看他们的指南
更新 要完全回答您的问题,可以很容易地通过使用指定的类将文本包装在
标记中,为某些文本添加高亮显示。我在前一个例子的基础上又总结了另一个例子:
简言之:
。突出显示{
背景色:#ff0;
}
$(“#搜索”).keyup(函数(){
var search=$('#search').val();
if(jsonString.match(搜索)){
var regex=new RegExp(搜索“g”);
突出显示的变量=“”+搜索+“”;
var newJsonString=jsonString.replace(regex,突出显示);
$('#jsonCode').html(prettyPrintOne(newJsonString));
}否则{
$('#jsonCode').html(prettyPrintOne(jsonString));
}
});
如果要删除动态功能并在加载时突出显示,只需将逻辑从事件侦听器中移出:
var highlight=function(jsonString,searchFor){
var regex=new RegExp(搜索'g');
突出显示的变量=“”+搜索+“”;
var newJsonString=jsonString.replace(regex,突出显示);
返回prettyPrintOne(newJsonString);
};
并在用代码填充区域之前调用它
$('#jsonCode').html(突出显示(jsonString,'X-RateLimit');
演示:这是一个很好的答案,非常有用!我是一个真正的JavaScript高手(尽管我知道发生了什么)。我不需要以交互方式突出显示(按键时做出反应),而是提前突出显示。我该怎么做?@JohnDoe我已经更新了我的答案,并提供了另一个具有该功能的示例。行高亮显示有一个问题-它不会延伸到容器的末尾,但是单词高亮显示的效果与预期的一样。这是一个很好的答案,非常有用!我是一个真正的JavaScript高手(尽管我知道发生了什么)。我不需要以交互方式突出显示(按键时做出反应),而是提前突出显示。我该怎么做?@JohnDoe我已经更新了我的答案,并提供了另一个具有该功能的示例。行高亮显示有一个问题——它不会延伸到容器的末尾,但单词高亮显示的效果与预期的一样。