在nvue中富文本rich-text不显示和图片不显示的解决

uniapp开发中,使用nvue方式,富文本及图片不展示的办法
摘要由CSDN通过智能技术生成

一、问题:
①使用nvue展示富文本,H5端可以显示,而真机调试时却啥也不显示。
②将文件换成vue即可都展示。

<rich-text :nodes="content" style="font-size: 14px;"></rich-text>

		data() {
   
			return {
   
				content: `
					<div style="text-align:center;">
						<p>露从今夜白,月是故乡明</p>
						<img src="https://cdn.uviewui.com/uview/swiper/2.jpg" style="width:550upx;height: 220upx" />
					</div>
				`
			}
		},

二、解决办法:
在common文件下新建html-parser.js文件,代码如下:


// Regular Expressions for parsing tags and attributes
var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;
var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/;
var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; // Empty Elements - HTML 5

var empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); // Block Elements - HTML 5
// fixed by xxx 将 ins 标签从块级名单中移除

var block = makeMap('a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); // Inline Elements - HTML 5

var inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); // Elements that you can, intentionally, leave open
// (and which close themselves)

var closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); // Attributes that have their values filled in disabled="disabled"

var fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); // Special Elements (can contain anything)

var special = makeMap('script,style');
function HTMLParser(html, handler) {
   
  var index;
  var chars;
  var match;
  var stack = [];
  var last = html;

  stack.last = function () {
   
    return this[this.length - 1];
  };

  while (html) {
   
    chars = true; // Make sure we're not in a script or style element

    if (!stack.last() || !special[stack.last()]) {
   
      // Comment
      if (html.indexOf('<!--') == 0) {
   
        index = html.indexOf('-->');

        if (index >= 0) {
   
          if (handler.comment) {
   
            handler.comment(html.substring(4, index));
          }

          html = html.substring(index + 3);
          chars = false;
        } // end tag

      } else if (html.indexOf('</') == 0) {
   
        match = html.match(endTag);

        if (match) {
   
          html = html.substring(match[0].length)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nvue使用rich-text组件是用来展示富文本内容的。富文本内容可以包括文本图片等元素。在nvue中,可以通过以下几种方式来使用rich-text组件: 1. 在模板中直接使用: ```html <rich-text :nodes="content" style="font-size: 14px;"></rich-text> ``` 在data中定义content的内容,可以是包含HTML标签的字符串,如`<div><p>Hello World</p></div>`。 2. 使用变量绑定: ```html <rich-text :nodes="{{htmlSnip}}"></rich-text> ``` 在data中定义名为htmlSnip的数组,数组的每一项代表一个富文本元素,可以使用HTML标签和相应的属性来描述元素的样式和内容。 3. 在使用template的情况下: ```html <template> <view class="u-content"> <rich-text :nodes="content" style="font-size: 14px;"></rich-text> </view> </template> <script> import htmlParser from '../../common/html-parser' export default { data() { return { content: [] } }, onLoad() { this.initText(); }, methods: { initText() { // 请求回来后的参数,此处模拟一下 const arr = `<div><p>Hello World</p><img src="https://example.com/image.jpg" /></div>`; this.content = htmlParser(arr); } } } </script> ``` 在data中定义content为空数组,然后在onLoad钩子函数中通过请求获取到的富文本内容后,将其解析为nodes数组,再赋值给content。 通过以上方式,你可以在nvue中使用rich-text组件来展示富文本内容。注意,rich-text组件在H5端可以正常显示,但在真机调试时可能会出现无法显示的情况,这可能是因为nvue在不同平台上的差异导致的。如果遇到这个问题,你可以尝试使用vue文件来替代nvue文件来展示富文本内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [在nvue中富文本rich-text显示图片显示解决](https://blog.csdn.net/weixin_45979310/article/details/122997535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【uni-app】rich-text的使用](https://blog.csdn.net/loyd3/article/details/127726045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值