使用LigerUI框架的f_addTab方法新开一个Tab的注意事项

使用LigerUI框架的f_addTab方法新开一个Tab的注意事项


今天遇到一个场景,需要手动新开一个tab页,我们知道,原始的新开页面,其连接是在左侧,如下图所示,点击左侧的连接会在右侧新开一个tab


[caption id="attachment_1681" align="alignnone" width="563"]LigerUI新开一个tab页面 LigerUI新开一个tab页面[/caption]


但是我现在要点击右侧页面的工作日志按钮,或fname按钮,需要新开一个tab

经过两位大神的努力,也没有把我这个小白教会

不过后来我发现,其实是已经把我教会了,似乎是这个框架的源码有问题

如上图所示,我的主页是框架默认的一个页面

该页面已经写好了所需要的js代码

我现在添加的按钮和连接代码如下

<input type="button" onClick="f_addTabItem('demos/case/week.htm','fsdf')" value="fname" />
 <a class="l-link" href="javascript:f_addTabItem('demos/case/week.htm','fsdf')">工作日志</a> 
部分js代码如下


<script src="lib/jquery/jquery-1.9.0.min.js" type="text/javascript"></script> 
<script type="text/javascript">
    jQuery(f_init);

    function f_addTabItem(url, text)
    {
        var tabid = "ligerui" + new Date().toDateString();
        parent.f_addTab(tabid, text, url);
        }
很遗憾,这段代码测试是通不过


首先我们得到错误提示是

Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.f_addTabItem @ welcome.htm:12(anonymous function) @ VM449:1
百度了下,大概意思就是说获取父窗口失败吧,但是在服务器上则可以。


于是,我立马启动tomcat在服务器上测试

这次又遇到了新的错误,错误代码如下

Uncaught Error: Syntax error, unrecognized expression: li[tabid=ligerui1Wed Dec 14 2016] aSizzle.error @ jquery-1.9.0.js:4421tokenize @ jquery-1.9.0.js:5076Sizzle @ jquery-1.9.0.js:3964jQuery.fn.extend.find @ jquery-1.9.0.js:5576jQuery.fn.jQuery.init @ jquery-1.9.0.js:196jQuery @ jquery-1.9.0.js:62$.ligerui.controls.Tab.ligerExtend.isTabItemExist @ ligerTab.js:690$.ligerui.controls.Tab.ligerExtend.addTabItem @ ligerTab.js:702f_addTab @ index.html:131f_addTabItem @ welcome.html:12(anonymous function) @ VM27587:1
从上面的代码中我发现了


li[tabid=ligerui1Wed Dec 14 2016]

于是我打印了上面js代码中的tabid,既代码编码如下

    <title></title>
    <script src="../liger/lib/jquery/jquery-1.9.0.js" type="text/javascript"></script> 
    <script type="text/javascript">
        jQuery(f_init);
		function f_addTabItem(url, text)
        {
            var tabid = "ligerui1" + new Date().toDateString();
            alert(tabid);
            parent.f_addTab(tabid, text, url);
        }
我发现这个值就是
ligerui1Wed Dec 14 2016



最后经过我的测试,我发现,原来这个tabid是不能有空格的,随机输入一个不带空格的tabid字符串,测试成功

最后测试,在LigerUI中的子页面新开一个tab成功,整个代码运行成功。


如果这是个bug,希望官方能够即使处理哦,我等小白实在伤不起啊!


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img