当前位置:  编程技术>WEB前端
本页文章导读:
    ▪jQuery css      jQuery css模块用于css属性的修改操作。 jQuery.fn.cssjQuery.fn.css = function( name, value ) { //又是用access来操作 return jQuery.access( this, function( elem, name, value ) { var styles, len, map = {}, .........
    ▪第十六章 BIRT疑难杂惑清理      第十四十五章还在书写中,先就目前BIRT比较集中的一些疑难杂惑进行解决。 问题一:把runtime包中自带的birt.war发布到Tomcat6上,运行后,首页面可以显示,但当点击" View Example "时,加载.........
    ▪Extjs中 TabPane如何内嵌其他网页       var tabPanel = new Ext.TabPanel({ activeTab: 0, region:'center', layoutOnTabChange : false, deferredRender: true, items:[ { title: '百度', layout: 'fit', height: 375, .........

[1]jQuery css
    来源:    发布时间: 2013-11-06

jQuery css模块用于css属性的修改操作。

 

jQuery.fn.css

jQuery.fn.css = function( name, value ) {
//又是用access来操作
return jQuery.access( this, function( elem, name, value ) {
var styles, len,
map = {},
i = 0;

//如果name是数组
if ( jQuery.isArray( name ) ) {
//通过getStyles方法返回elem的styles
styles = getStyles( elem );
len = name.length;

//创建对应styles的处理函数map
for ( ; i < len; i++ ) {
map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
}

return map;
}

//如果不是数组,则返回jQuery.style或jQuery.css
return value !== undefined ?
jQuery.style( elem, name, value ) :
jQuery.css( elem, name );
}, name, value, arguments.length > 1 );
};

又是通过jQuery.access来遍历和操作属性。

根据value值来判断是返回一个函数数组,还是返回一个函数传入jQuery.access。

主要用到jQuery.css和jQuery.style两个方法。

 

getStyles

function getStyles( elem ) {
return window.getComputedStyle( elem, null );
}

这是一个获取实际css style的方法。

可是……getComputedStyle是啥东西……

getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration]),只读。

语法:

var styles = window.getComputedStyle("元素", "伪类");

如果没有伪类,则传null。

实际上就是获取最终浏览器绘制时的css值,因为style不会返回所有css值,只会返回设置的css值,所以需要用该方法来获得所有css值。

限于篇幅本文就不详细解释了,有兴趣的朋友请参见:获取元素CSS值之getComputedStyle方法熟悉

 

jQuery.style

jQuery.style = function( elem, name, value, extra ) {
// 不处理text和comment节点
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
return;
}

var ret, type, hooks,
//修正css属性名
origName = jQuery.camelCase( name ),
style = elem.style;

//jQuery.cssProps是css缓存,如果有则取出值,否则通过vendorPropName函数来得到实际的css名字
name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );

// 获取必要的钩子
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

// 如果value已定义
if ( value !== undefined ) {
type = typeof value;

// 如果value是+=或则-=一个数,则转成对应的数字
if ( type === "string" && (ret = rrelNum.exec( value )) ) {
value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
// 将其类型改成number
type = "number";
}

// 确保NaN和null不被设置
if ( value == null || type === "number" && isNaN( value ) ) {
return;
}

// 如果value是数字则加上px
if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
value += "px";
}

// 修复#8908,IE9的问题,对于克隆的元素清除掉其background时,其原型的background也会被清除
if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
style[ name ] = "inherit";
}

// 如果钩子存在,则使用钩子设置值,否则用style[ name ]来设置值
if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
style[ name ] = value;
}

} else {
// 如果钩子存在,则使用钩子返回值
if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
return ret;
}

// 否则用style[ name ]来返回值
return style[ name ];
}
};

这里面有一个挺有趣的问题。下面两个代码最后结果是多少呢?

alert(("-" + 5) + 6);
alert(("-" + 5) * 6);

 

jQuery.css

jQuery.css = function(
    
[2]第十六章 BIRT疑难杂惑清理
    来源: 互联网  发布时间: 2013-11-06

第十四十五章还在书写中,先就目前BIRT比较集中的一些疑难杂惑进行解决。

问题一:把runtime包中自带的birt.war发布到Tomcat6上,运行后,首页面可以显示,但当点击"

View Example "时,加载报表就报错.错误内容如下:


或者在运行过程中出现:Caused by: java.lang.OutOfMemoryError: PermGen space

问题原因:java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法: 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 或者set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

最佳实践:尽量用公用库,用户库只保留必须的极简化包。


问题二:集群环境访问报表出现birt the viewing session is not avaliable or has expired

问题描述:

http://11.23.26.3:8084/biReport/frameset?__report=VIP_kefu.rptdesign&__masterpage=true&__format=html&__parameterpage=true&__toolbar=true&__showtitle=false

我采用上面的url,在一个项目中访问另一个项目birtReport中的birt报表,发生错误:

birt the viewing session is not avaliable or has expired

问题原因:session 失效

BIRT源码中session来自如下这段代码:

public static final String GENERAL_ERROR_NO_VIEWING_SESSION = "birt.viewer.error.noviewingsession";

birt.viewer.error.noviewingsession=The viewing session is not available or has expired.

ViewingSessionUtil.getSession( request );

如果在WEB-INF\viewer.properties 进行了如下的设置

# [VIEWING SESSION CONFIGURATION]
# The BIRT viewing session is a sub-session of the HTTP session.
# An HTTP session can have multiple BIRT viewing sessions.
# Each time a new viewer is opened, a new viewing session is created. 
# The following parameters are used to configure the viewing session
# management.
# If the matching HTTP session expires, all the viewing sessions
# attached to it will expire as well.

# Timeout value in seconds after which a viewing session will expire.
# The value 0 means that a session will never expire, and the cached files
# will never be cleant unless the belonging HTTP session expires.
viewer.session.timeout=1800
# [VIEWING SESSION CONFIGURATION]
# The BIRT viewing session is a sub-session of the HTTP session.
# An HTTP session can have multiple BIRT viewing sessions.
# Each time a new viewer is opened, a new viewing session is created. 
# The following parameters are used to configure the viewing session
# management.
# If the matching HTTP session expires, all the viewing sessions
# attached to it will expire as well.
# Timeout value in seconds after which a viewing session will expire.
# The value 0 means that a session will never expire, and the cached files
# will never be cleant unless the belonging HTTP session expires.
viewer.session.timeout=1800
# Timeout value in seconds after which a viewing session will expire.
# The value 0 means that a session will never expire, and the cached files
# will never be cleant unless the belonging HTTP session expires.
viewer.session.timeout=1800

在tomcat或者weblogic中也设置了session timeout时间,依然不能解决这个问题,

那么需要设置你的IE,用cookie来保持session

方法如下:

IE - Intetnet 选项 - 隐私 - 设置:这里有个拉动条,可以设置IE的cookie。将它调到“低”或者“最低”,可以达到解决问题的目的。

但客户通常是懒惰的,这个时候还有一种方案,用hostname代替前面的IP来访问报表
http://bi2.query.com:8084/biReport/frameset?__report=VIP_kefu.rptdesign&__masterpage=true&__format=html&__parameterpage=true&__toolbar=true&__showtitle=false


问题三:javascript出现失效,自定义的javascript无法访问

解决方案:设置默认的render格式为html,注意在designer中的javascript路径和tomcat的javascript路径是不同的,尽量配置使用相对路径

 问题四:怎么自定义打印

问题描述:想不使用birtviewer提供的打印工具栏,自己在页面上或者定义一个工具栏,那么可以参考birtviewer提供的jsp页面自己写一份,也可以利用动态文本在html代码中书写如下内容的鼠标触发事件:

<script>
self.moveTo(622,722);
self.resizeTo(1,1);
document.execCommand('print','true','true');
window.opener="anyone";
window.close();
</script>
window.open(path + '/output?__report=/report/oms/report.rptdesign&orderId=' + orderId);

问题五:导出Excel出现空行

这是java类库在导出microsoft excel时出现的错误,根源不在BIRT,而在microsoft office的闭源,导致java excel类库不完善。

解决方案,先用html格式的render打印;在制作报表的时候,分组信息尽量不要单独成一行,表头表尾,单元格头尾尽量去掉。

后面还会继续就BIRT问题提供解决方案。


作者:birtbird 发表于2013-1-21 15:20:57 原文链接
阅读:0 评论:0 查看评论

    
[3]Extjs中 TabPane如何内嵌其他网页
    来源: 互联网  发布时间: 2013-11-06
 var tabPanel = new Ext.TabPanel({
	    activeTab: 0,   
	    region:'center',   
	    layoutOnTabChange : false,
	    deferredRender: true,   
	    items:[
	   
	    {
	        title: '百度',   
	        layout: 'fit',
	        height: 375,    
	        id: 'training_grief_rep_tab_4',   
	        border: false,
	        deferredRender: false,
	        //items : new TrainingBriefSummaryItem({sunmmaryId: tariningId}),
	        autoScroll : true,
	        html:' <iframe scrolling="auto" frameborder="0" width="100%" height="100%" src=/blog_article/"/index.html'+'http://www.baidu.com'+'"> </iframe>'
	    }
	    ]   
    });

图片


作者:Dracotianlong 发表于2013-1-21 16:48:18 原文链接
阅读:0 评论:0 查看评论

    
最新技术文章:
▪css white-space:nowrap属性用法(可以强制文字不...
▪IE里button设置border:none属性无效解决方法
▪border:none与border:0使用区别
▪html清除浮动的6种方法示例
▪三个不常见的 HTML5 实用新特性简介
▪css代码优化的12个技巧
▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
▪小技巧处理div内容溢出
▪html小技巧之td,div标签里内容不换行
▪纯CSS实现鼠标放上去改变文字内容
▪li中插入img图片间有空隙的解决方案
▪CSS3中Transition属性详解以及示例分享
▪父div高度不能自适应子div高度的解决方案
▪告别AJAX实现无刷新提交表单
▪从零学CSS系列之文本属性
▪HTML 标签
▪CSS3+Js实现响应式导航条
▪CSS3实例分享之多重背景的实现(Multiple background...
▪用css截取字符的几种方法详解(css排版隐藏溢...
▪页面遮罩层,并且阻止页面body滚动。bootstrap...
▪CSS可以做的几个令你叹为观止的实例分享
▪详细分析css float 属性以及position:absolute 的区...
▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
▪CSS小例子(只显示下划线的文本框,像文字一...
▪可以给img元素设置背景图
▪不通过JavaScript实现的自动滚动视差效果
▪div+CSS 兼容小摘
▪CSS的inherit与auto使用分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3