Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带高亮显示的JSON漂亮打印_Javascript_Json_Highlighting_Jsonp_Jquery - Fatal编程技术网

Javascript 带高亮显示的JSON漂亮打印

Javascript 带高亮显示的JSON漂亮打印,javascript,json,highlighting,jsonp,jquery,Javascript,Json,Highlighting,Jsonp,Jquery,我想在网页上漂亮地打印JSON,并突出显示其中的一些文本/行 理想情况下,我搜索的是一个IFRAME服务,我可以链接到该服务和URL,其中JSON被加载并显示为HTML,但我想指定一个搜索字符串,该字符串应该突出显示,或者包含搜索字符串的整行应该突出显示。JSON是公共的,因此没有隐私问题 如果没有这样的服务,是否有支持高亮显示的Javscript库?更多地关注您关于iFrame的问题-这是一个很好的解决方案。如果域名不相同,则不可能在iframe中执行您想要的操作。然而,在这种情况下,有相同原

我想在网页上漂亮地打印JSON,并突出显示其中的一些文本/行

理想情况下,我搜索的是一个IFRAME服务,我可以链接到该服务和URL,其中JSON被加载并显示为HTML,但我想指定一个搜索字符串,该字符串应该突出显示,或者包含搜索字符串的整行应该突出显示。JSON是公共的,因此没有隐私问题


如果没有这样的服务,是否有支持高亮显示的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我已经更新了我的答案,并提供了另一个具有该功能的示例。行高亮显示有一个问题——它不会延伸到容器的末尾,但单词高亮显示的效果与预期的一样。