利用FCKeditor打印分页符实现内容分页之二

前面白冰写了篇利用《FCKeditor打印分页符实现内容分页》的文章,本来觉得多简单的,也没考虑太多,致使实际运用时出了问题。主要的问题是,判断不够严谨,发现这个分页标签的判断似乎不甚灵光,有时行,有时不行,很怪!仔细比较分析代码后,总算找出了原因。原来,FCKeditor的这个打印分页标签,第一次直接添加时是这样:

 

XML/HTML代码
  1. <div style="page-break-after: always"><span style="display: none">&nbsp;</span></div>  

 

中间会有一个空格代码,而第二次,如果再编辑文章时:

 

XML/HTML代码
  1. <div style="page-break-after: always"><span style="display: none"> </span></div>  

 

FCKeditor会自动把空格代码直接替换成空格,从而导致标签的判断不灵。

 

找到了原因,问题就好解决了。也不用判断两次标签,直接和FCKeditor一样,不管是第一次发布还是再编辑发布,在判断分页之前先把“content”中分页标签里的那个空格代码替换成空格就行。另外须注意一个浏览差异:在FF下正常,在IE下,样式标签末尾没有“;”的,一定也要判断替换一下,不然分页符也会不灵光的。

 

ASP/Visual Basic代码
  1. pagebreaka = "<div style=""page-break-after: always""><span style=""display: none"">&nbsp;</span></div>"  
  2. pagebreakb = "<div style=""page-break-after: always""><span style=""display: none""> </span></div>"  
  3. pagebreakc = "<div style=""page-break-after: always;""><span style=""display: none;"">&nbsp;</span></div>"  
  4. pagebreakd = "<div style=""page-break-after: always;""><span style=""display: none;""> </span></div>"  
  5.   
  6. content = replace(content,pagebreaka,pagebreakd)  
  7. content = replace(content,pagebreakb,pagebreakd)  
  8. content = replace(content,pagebreakc,pagebreakd)  
  9. newcontent = split(content,pagebreakd)  

 

然后,结合实际需要,可以给当前页链接指定不同的样式。而页面可能本身带有其它参数,所以,可以再加一段代码,判断一下,就屡试不爽了!修正后的函数代码如下:

 

ASP/Visual Basic代码
  1. page = clng(trim(request.querystring("page")))  
  2.   
  3. function pages(content) '文章内容分页  
  4.   
  5.   Dim strurl,str_url,strrd_url,filename,search_str,result_url  '判断当前URL是否跟有参数  
  6.       search_str = "page="  
  7.   
  8.       strurl = request.servervariables("URL")  
  9.       strurl = split(strurl,"/")  
  10.       filename = ubound(strurl,1)  
  11.       str_url = strurl(filename)  '得到当前页面文件名  
  12.   
  13.       str_params = trim(request.servervariables("QUERY_STRING"))  
  14.         if str_params = "" Then  
  15.            result_url = str_url & "?page="  
  16.          else  
  17.            if instrrev(str_params,search_str) = 0 Then  
  18.               result_url = str_url & "?" & str_params &"&page="  
  19.             else  
  20.               strrd_url = instrrev(str_params,search_str) - 2  
  21.                 if strrd_url = -1 Then  
  22.                    result_url = str_url & "?page="  
  23.                  else  
  24.                    str_params = left(str_params,strrd_url)  
  25.                    result_url = str_url & "?" & str_params &"&page="  
  26.                 end if  
  27.             end if  
  28.         end If  
  29.           
  30.       pageself = result_url  
  31.         
  32.        pagebreaka = "<div style=""page-break-after: always""><span style=""display: none"">&nbsp;</span></div>"  
  33.        pagebreakb = "<div style=""page-break-after: always""><span style=""display: none""> </span></div>"  
  34.        pagebreakc = "<div style=""page-break-after: always;""><span style=""display: none;"">&nbsp;</span></div>"  
  35.        pagebreakd = "<div style=""page-break-after: always;""><span style=""display: none;""> </span></div>"  
  36.   
  37.       content = replace(content,pagebreaka,pagebreakd)  
  38.       content = replace(content,pagebreakb,pagebreakd)  
  39.       content = replace(content,pagebreakc,pagebreakd)  
  40.       newcontent = split(content,pagebreakd)
  41.  
  42.         
  43.       if page = "" or page = 1 then  
  44.           pagenumber = "<a href='"&pageself&"1' class='nowpage'>第<strong>1</strong>页</a>"  
  45.        else  
  46.           pagenumber = "<a href='"&pageself&"1'>第<strong>1</strong>页</a>"  
  47.       end if  
  48.         
  49.       for i = 0 to ubound(newcontent)  
  50.           p = i + 1  
  51.           if p > 1 then  
  52.               if page <> "" and page = p then  
  53.                   pagenumber = pagenumber & ",<a href='"&pageself&p&"' class='nowpage'>第<strong>" &p& "</strong>页</a>"  
  54.                else  
  55.                   pagenumber = pagenumber & ",<a href='"&pageself&p&"'>第<strong>" &p& "</strong>页</a>"  
  56.               end if  
  57.           end if  
  58.       next  
  59.         
  60.       if page = "" or page = 1 then  
  61.           response.write newcontent(0)  
  62.        else  
  63.           response.write newcontent(page-1)  
  64.       end if  
  65.         
  66.       if p > 1 then response.write pagenumber  
  67.     
  68.   end function  
朝天翼视觉创意工作室资源下载