这段时间倒腾的东西需要和微博有大量的互动,所以使用了微博的展示框以及评论箱。微博在这方面处理的不是很好,均是提供了iframe的方式。
在移动端我并不希望加载这样的iframe页面,@media + display:none无法避免资源被加载,只是被隐藏而已。不谈及性能,光在流量损耗上对于访问者来说都是不友好的。
最终我想到一个办法来处理展示框,由于本身已经引用了JQuery,所以直接用了下面的代码:
if($(window).width() > 1260) {
$("#sidebar").html("<iframe width='100%' height='612' class='share_self' frameborder='0' scrolling='no' src='//xxxxxxxx'></iframe>");
};
查询窗体宽度后,填入iframe内容,可以避免手机端的加载。但是这样的办法无法应用于评论箱,不知道从何下手。
微博提供的是这样的一段代码:
<script>
(function(){
var url = "//xxxxxxxxxxxxxx.com";
url = url.replace("url=auto", "url=" + encodeURIComponent(document.URL));
document.write('<iframe id="WBCommentFrame" src="' + url + '" scrolling="no" frameborder="0" style="width:100%"></iframe>');
})();
</script>
<script src="//tjs.sjs.sinajs.cn/open/widget/js/widget/comment.js"></script>
<script>
window.WBComment.init({
"id": "WBCommentFrame"
});
</script>
希望这段代码能够在1260以上的宽度才会被加载,而不是被隐藏。
先行感谢!
if($(window).width() >= 1261) {
$.getScript('//tjs.sjs.sinajs.cn/open/widget/js/widget/comment.js', function(){
var url = "//xxxxxxxxxxxxxx.com";
url = url.replace("url=auto", "url=" + encodeURIComponent(document.URL));
document.write('<iframe id="WBCommentFrame" src="' + url + '" scrolling="no" frameborder="0" style="width:100%"></iframe>');
window.WBComment.init({
"id": "WBCommentFrame"
});
});
};
可以试一下,不知道有没有用。
对了,我贴一下自己的解决方法,这是在Jquery下解决的
这是我后来使用的微博另一种载入方式,需要修改<html>标签,不过引入更方便
不过很可惜的是,F12后发现依然是iframe。而且号称有可以抓取url评论的功能,经常会出现评论乱入的情况……
if ($(window).width() > 1260) {
$("#sidebar").html("<iframe width='100%' height='612' class='share_self' frameborder='0' scrolling='no' src='//widget.weibo.com'></iframe>");
$("#comments").html("<wb:comments border='n' width='auto' color='cccccc,ffffff,555555,00a3cf,cccccc,f0f0f0' appkey='xxx' ralateuid='xxx'></wb:comments>");
$.getScript("//tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=xxxxxx");
};