前面白冰写了篇利用《FCKeditor打印分页符实现内容分页》的文章,本来觉得多简单的,也没考虑太多,致使实际运用时出了问题。主要的问题是,判断不够严谨,发现这个分页标签的判断似乎不甚灵光,有时行,有时不行,很怪!仔细比较分析代码后,总算找出了原因。原来,FCKeditor的这个打印分页标签,第一次直接添加时是这样:
<div style="page-break-after: always;"><span style="display: none;"> </span></div>
中间会有一个空格代码,而第二次,如果再编辑文章时:
<div style="page-break-after: always"><span style="display: none"> </span></div>
代码载入到编辑窗口时FCKeditor会自动把空格代码直接替换成空格,从而导致分页标签的判断不灵。
找到了原因,问题就好解决了。也不用判断两次标签,直接和FCKeditor一样,不管是第一次发布还是再编辑发布,在判断分页之前先把“content”中分页标签里的那个空格代码替换成空格就行了。另外须注意一个浏览差异:在FF下正常,在IE下,样式标签末尾没有“;”的,一定也要判断替换一下,不然分页符也会不灵光的。
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)
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)
然后,结合实际需要,可以给当前页链接指定不同的样式。而页面可能本身带有其它参数,所以,可以再加一段代码,判断一下,就屡试不爽了!修正后的函数代码如下:
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
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
暂无评论 Trackback Url:http://ichov.com/web/using-fckeditor-print-tab-split-page-2nd.html/trackback


