WEEX文本里的超链接
背景:
时至今日,讨论WEEX只是因为之前的项目是采用这个写的。所以需要维护和开发一些小的功能,前段时间,来了个需求,一段文本里有几个字符点击之后要跳转。原以为这是个喝凉水的活儿,结果差点淹死。
尝试方案1
这种需求写惯了前段之后,第一个想法可能都差不多,一个<p>嵌套一个<a>
<p>这是<a href="https://www.baidu.com">链接</a></p>
但是这种方式在weex里行不通。因为<text>组件不支持子组件。
于是我想到了weex的<richtext>组件,‘富文本组件可以内嵌 <span><a><image>。同时它也支持 <span><a><image> 的嵌套。’看到这句话我以为要一两句代码搞定呢。殊不知···
迈向深渊
官方提到了一句话‘富文本和它下面的 <span>, <a>, <image> 只支持有限的样式。’
我看了下<span>, <a> 支持color、font-family、font-size、font-style,基本够用了,那就剩下一个点击了。引用原话是点击可以用通用事件的click或者itemclick。于是我高高兴兴写上代码准备运行
<richText>这是<span @click="showRule">链接</span>哈哈。</richText>
结果 span单独换行了。文案显示成了三行。
那来强制给弄成inline吧。于是加上试一试,还不好使,再看官方文档‘<span> and <a> 会被显示为 display:inline‘。我想是不是官方的文档不好用啊,于是把官方的例子放到playground里,
例子简化如下
<richtext>这是
<span>link</span>
</richtext>
咦好用的,于是,我把例子复制粘贴到我的手机上。运行之后,我擦。手机上就不行。。怎么办,周围也没人会啊,那就只能再想个办法了。
尝试方案2
既然richtext里包span会换行,那么让span里包一个a呢
<a href="http://.js">这是
<span>TAOBAO</span>
</a>
然而,照样换行。但是有一点需要说的是这两个方案链接都是可点击的。
尝试方案3
前两个不行那就来第三个richtext里包一个a
<richtext>这shi
<a href="http://.js">链接
</a>
</richtext>
做完之后run起来,不换行了,哈哈,刚笑了一半,脸上的笑就凝固了,,格式没有了,不仅字体上的格式没有应用上去,链接也不能点了···一个头两个大。
解决方案n
为什么这里写个n呢,因为那天我就是这几个标签来回修改,搞到晚上都很晚,我都忘记我试了多少方案的时候,灵光一现,有了个好主意,大家都知道WEEX是3端通用的,也就是,一个页面在各个端看起来是一样的,而WEEX的宽度又都是按照750px来的,那就意味着这文字也是不变的,于是哈哈,大家应该也知道怎么弄了。笨是笨了点,关键好用啊,以后做别的也有这个办法了。想通了这一点,动手刷刷刷一写,run一下,完美。
总结
有时候,一些笨的办法往往出奇制胜,另外就是少用一些不成熟的框架吧。比如这个事情,如果是用html,可能半分钟就好了,另外,问题虽然解决了,但是那天我激动的半夜没睡着。失眠了,第二天迷迷瞪瞪的,大家写代码一定要平常心啊。