手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

如何在多个页面使用同一个HTML片段

我个人是觉得文章内的方法最有意思,既让代码显示在本页,又让这些代码不会被解析。以前我怎么没有想到过??(使用textarea来使代码完整存放在本页)
看来我的思维还是已经僵化了。。。
原文地址为:http://www.cnblogs.com/sanshi/archive/2009/08/07/1541380.html,是博客园sanshi的文章。

原文如下:

问题描述
有一个比较复杂的HTML片段(A),如果把这个HTML片段嵌入到其他页面中(B,C,D....)。
问题的关键是在HTML片段中有大量的JavaScript逻辑需要处理,比如说分页,点击事件响应等。

对于这个问题,我们用一个简单的例子来说明:
“页面上有一个按钮,点击此按钮引入一个HTML片段,此HTML片段中有分页按钮。”

1. 使用IFrame
主页面,点击一个按钮向页面引入一个IFrame:

XML/HTML代码
  1. <script type="text/javascript">  
  2.     $(function() {  
  3.         $("#clickToInsert").click(function() {  
  4.             $("#placeholder").html('<iframe src="iframe.htm"></iframe>');  
  5.         });  
  6.     });  
  7. </script>  
  8. <input type="button" id="clickToInsert" value="Insert HTML" />  
  9. <div id="placeholder">  
  10. </div>  
IFrame页面,模拟分页的情况:
XML/HTML代码
  1. <script type="text/javascript">  
  2.     $(function() {  
  3.         var parent = $("#complex_page_segment");  
  4.         $(".previous", parent).click(function() {  
  5.             $(".content", parent).html("Previous Page Content");  
  6.         });  
  7.         $(".next", parent).click(function() {  
  8.             $(".content", parent).html("Next Page Content");  
  9.         });  
  10.     });  
  11. </script>  
  12. <div id="complex_page_segment">  
  13.     <input type="button" value="Previous Page" class="previous" />  
  14.     <input type="button" value="Next Page" class="next" />  
  15.     <div class="content">  
  16.         Page Content</div>  
  17. </div>  
2. AJAX返回页面片段,并注册事件
注:我们通过textarea来模拟返回的HTML片段。
XML/HTML代码
  1. <script type="text/javascript">  
  2.     $(function() {  
  3.         $("#clickToInsert").click(function() {  
  4.             $("#placeholder").html($("#clone").val());  
  5.             var parent = $("#complex_page_segment");  
  6.             $(".previous", parent).click(function() {  
  7.                 $(".content", parent).html("Previous Page Content");  
  8.             });  
  9.             $(".next", parent).click(function() {  
  10.                 $(".content", parent).html("Next Page Content");  
  11.             });  
  12.         });  
  13.     });  
  14. </script>  
  15. <input type="button" id="clickToInsert" value="Insert HTML" />  
  16. <div id="placeholder">  
  17. </div>  
  18. <textarea id="clone" style="display: none;">  
  19. <div id="complex_page_segment">  
  20.     <input type="button" value="Previous Page" class="previous" />  
  21.     <input type="button" value="Next Page" class="next" />  
  22.     <div class="content">Page Content</div>  
  23. </div>  
  24. </textarea>  
由于我们需要在多个页面引用同一个HTML片段,这种方法导致大量事情处理被重复性的拷贝粘贴,明显我们需要将公共的方法提取出来。

3. AJAX返回页面片段,并调用页面片段中的函数注册事件
XML/HTML代码
  1. <script type="text/javascript">  
  2.     $(function() {  
  3.         $("#clickToInsert").click(function() {  
  4.             $("#placeholder").html($("#clone").val());  
  5.             init_complex_page_segment();  
  6.         });  
  7.     });  
  8. </script>  
  9. <input type="button" id="clickToInsert" value="Insert HTML" />  
  10. <div id="placeholder">  
  11. </div>  
  12. <textarea id="clone" style="display: none;">  
  13. <script type="text/javascript">  
  14.     function init_complex_page_segment() {  
  15.         var parent = $("#complex_page_segment");  
  16.         $(".previous", parent).click(function() {  
  17.             $(".content", parent).html("Previous Page Content");  
  18.         });  
  19.         $(".next", parent).click(function() {  
  20.             $(".content", parent).html("Next Page Content");  
  21.         });  
  22.     }  
  23. </script>  
  24. <div id="complex_page_segment">  
  25.     <input type="button" value="Previous Page" class="previous" />  
  26.     <input type="button" value="Next Page" class="next" />  
  27.     <div class="content">Page Content</div>  
  28. </div>  
  29. </textarea>  

其实我们可以更进一步,完全没必要手工调用这个函数,而是可以在返回的HTML片段中让其自动执行。

4. AJAX返回页面片段,其事件自动注册

XML/HTML代码
  1. <script type="text/javascript">  
  2.     $(function() {  
  3.         $("#clickToInsert").click(function() {  
  4.             $("#placeholder").html($("#clone").val());  
  5.         });  
  6.     });  
  7. </script>  
  8. <input type="button" id="clickToInsert" value="Insert HTML" />  
  9. <div id="placeholder">  
  10. </div>  
  11. <textarea id="clone" style="display: none;">  
  12. <script type="text/javascript">  
  13.     $(function() {  
  14.         var parent = $("#complex_page_segment");  
  15.         $(".previous", parent).click(function() {  
  16.             $(".content", parent).html("Previous Page Content");  
  17.         });  
  18.         $(".next", parent).click(function() {  
  19.             $(".content", parent).html("Next Page Content");  
  20.         });  
  21.     });  
  22. </script>  
  23. <div id="complex_page_segment">  
  24.     <input type="button" value="Previous Page" class="previous" />  
  25.     <input type="button" value="Next Page" class="next" />  
  26.     <div class="content">Page Content</div>  
  27. </div>  
  28. </textarea>  
最后一种方法和第一种IFrame的方式是我们所推荐的。

 

支持中文的截取字符函数,不同编码下中文字符的范围一目了然

这是一个简单的函数,或许对你我都有用吧。
以前也有类似的文章,这个我仍然和上次一样,用来记录这些正则,无它。。。
原文作者阿彪,来自:http://www.bloomandkevin.cn/2009/02/blog-post.html

PHP代码
  1. <?php  
  2. /* 
  3. * 中文截取,支持gb2312,gbk,utf-8,big5 
  4. * 
  5. * @param string $str 要截取的字串 
  6. * @param int $start 截取起始位置 
  7. * @param int $length 截取长度 
  8. * @param string $charset utf-8|gb2312|gbk|big5 编码 
  9. * @param $suffix 是否加尾缀 
  10. */  
  11. public function csubstr($str$start=0, $length$charset="utf-8"$suffix=true)  
  12. {  
  13.     if(function_exists("mb_substr"))  
  14.         return mb_substr($str$start$length$charset);  
  15.   
  16.     $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";  
  17.     $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";  
  18.     $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";  
  19.     $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";  
  20.   
  21.     preg_match_all($re[$charset], $str$match);  
  22.     $slice = join("",array_slice($match[0], $start$length));  
  23.     if($suffixreturn $slice."…";  
  24.      
  25.     return $slice;  
  26. }  
  27. ?>  

Tags: 中文截取

[转载]篱笆网员工遭遇潜规则后的离职书(请自己google或百度)

这篇日志被加密了,请输入密码后查看。

解决firefox 升级带来的问题

firefox是我一直用的浏览器,也是我的默认浏览器。为了它我安装了N多插件。可是在升级到3.5的时候,我死活启动不了它。

找到了google,根据一些人的提示,做了一个BAT文件,删除了很多东西,但最终却还是不能启动。

于是怀疑软件目录下是否有一些老版本的软件内容与新版本有冲突。决定安装firefox3.5,但另外选择了一个目录。结果,果然是我的猜测,FF3.5启动成功。

但由于我使用了那个BAT文件,我很多配置文件都被删除了。郁闷啊,还有很多插件。最让人心痛的是scrapbook里的内容再也回不来了。(scrapbook好是好,就是不能直接存储在外面)

如果有朋友遇到我的情况,可以参考一下:直接把firefox安装在新目录,然后去老的目录里卸载旧程序(删除的时候选择保留原有配置文件,不保留,插件也没有了),这样,还能保证插件的保留。

Tags: firefox

闲着无聊把PSP上NEOGEO模拟的KOF98通关

闲来无聊,在上厕所的时候把玩PSP上的模拟器,把NEOGEO的模拟器的KOF98,时间模式中,采用大门,目前以12分43秒通关。最后BOSS perfcect。当然,我这是采用了强悍的SL大法。现在我又在重新玩了,还是用大门。这次我仍然采用了SL大法,看看时间能不能控制在10分钟内。oh yeah

自 WAP 发表