利用FCKeditor打印分页符实现内容分页之二
前面白冰写了篇利用《FCKeditor打印分页符实现内容分页》的文章,本来觉得多简单的,也没考虑太多,致使实际运用时出了问题。主要的问题是,判断不够严谨,发现这个分页标签的判断似乎不甚灵光,有时行,有时不行,很怪!仔细比较分析代码后,总算找出了原因。原来,FCKeditor的这个打印分页标签,第一次直接添加时是这样:
XML/HTML代码- <div style="page-break-after: always"><span style="display: none"> </span></div>
中间会有一个空格代码,而第二次,如果再编辑文章时:
XML/HTML代码- <div style="page-break-after: always"><span style="display: none"> </span></div>
FCKeditor会自动把空格代码直接替换成空格,从而导致标签的判断不灵。
找到了原因,问题就好解决了。也不用判断两次标签,直接和FCKeditor一样,不管是第一次发布还是再编辑发布,在判断分页之前先把“content”中分页标签里的那个空格代码替换成空格就行。另外须注意一个浏览差异:在FF下正常,在IE下,样式标签末尾没有“;”的,一定也要判断替换一下,不然分页符也会不灵光的。
ASP/Visual Basic代码- pagebreaka = "<div style=""page-break-after: always""><span style=""display: none""> </span></div>"
- pagebreakb = "<div style=""page-break-after: always""><span style=""display: none""> </span></div>"
- pagebreakc = "<div style=""page-break-after: always;""><span style=""display: none;""> </span></div>"
- pagebreakd = "<div style=""page-break-after: always;""><span style=""display: none;""> </span></div>"
- content = replace(content,pagebreaka,pagebreakd)
- content = replace(content,pagebreakb,pagebreakd)
- content = replace(content,pagebreakc,pagebreakd)
- newcontent = split(content,pagebreakd)
然后,结合实际需要,可以给当前页链接指定不同的样式。而页面可能本身带有其它参数,所以,可以再加一段代码,判断一下,就屡试不爽了!修正后的函数代码如下:
ASP/Visual Basic代码- page = clng(trim(request.querystring("page")))
- function pages(content) '文章内容分页
- Dim strurl,str_url,strrd_url,filename,search_str,result_url '判断当前URL是否跟有参数
- search_str = "page="
- strurl = request.servervariables("URL")
- strurl = split(strurl,"/")
- filename = ubound(strurl,1)
- str_url = strurl(filename) '得到当前页面文件名
- str_params = trim(request.servervariables("QUERY_STRING"))
- if str_params = "" Then
- result_url = str_url & "?page="
- else
- if instrrev(str_params,search_str) = 0 Then
- result_url = str_url & "?" & str_params &"&page="
- else
- strrd_url = instrrev(str_params,search_str) - 2
- if strrd_url = -1 Then
- result_url = str_url & "?page="
- else
- str_params = left(str_params,strrd_url)
- result_url = str_url & "?" & str_params &"&page="
- end if
- end if
- end If
- pageself = result_url
- pagebreaka = "<div style=""page-break-after: always""><span style=""display: none""> </span></div>"
- pagebreakb = "<div style=""page-break-after: always""><span style=""display: none""> </span></div>"
- pagebreakc = "<div style=""page-break-after: always;""><span style=""display: none;""> </span></div>"
- pagebreakd = "<div style=""page-break-after: always;""><span style=""display: none;""> </span></div>"
- content = replace(content,pagebreaka,pagebreakd)
- content = replace(content,pagebreakb,pagebreakd)
- content = replace(content,pagebreakc,pagebreakd)
- newcontent = split(content,pagebreakd)
- if page = "" or page = 1 then
- pagenumber = "<a href='"&pageself&"1' class='nowpage'>第<strong>1</strong>页</a>"
- else
- pagenumber = "<a href='"&pageself&"1'>第<strong>1</strong>页</a>"
- end if
- for i = 0 to ubound(newcontent)
- p = i + 1
- if p > 1 then
- if page <> "" and page = p then
- pagenumber = pagenumber & ",<a href='"&pageself&p&"' class='nowpage'>第<strong>" &p& "</strong>页</a>"
- else
- pagenumber = pagenumber & ",<a href='"&pageself&p&"'>第<strong>" &p& "</strong>页</a>"
- end if
- end if
- next
- if page = "" or page = 1 then
- response.write newcontent(0)
- else
- response.write newcontent(page-1)
- end if
- if p > 1 then response.write pagenumber
- end function





