刚才我发现了一个很怪异的问题。是后端的。
在 system/class/cls_template.inc.php 里的 output 方法,是wecenter输出前端模板的关键函数,每个页面都在调用它。
但是它有个很奇怪的动作:会把html里所有的 “data-action”属性(data-*是HTML5最常用的属性命名方式)的值,自动加上本站网址。
例如 假设我的html里有一个标签:
<div class="abc" data-action="ok">
然后经过output输出后,变成了:
<div class="abc" data-action="http://mydomain.com/ok">
请教这是什么用意?
====================
老规矩,看代码:
就是这段代码搞的鬼。
它里面有一个正则替换,把所有 带有 href或action关键字的代码,都自动加上 baseurl 。
这段代码的用意,是处理 url_rewrite 规则,但是这么写,算不算一个BUG???
=======================
修正办法探讨:
既然bug的原因是,代码在处理url_write时,对于类似<form action="...">这样的代码自动加url,是正确的,但是对于 data-action 这样的纯HTML标记也产生了误杀,那么解决办法还是从这里着手,很简单,在正则表达式里,把相关的关键词前面加上一个空格。因为真正要处理的action一般都会前面有空格,否则就不应处理。
修正代码如下:
我这边测试,好了。
但不知道还会不会有其他情况没考虑到。请官方团队考虑吧。
阅读全文
收起全文