完美调用新浪新闻的简单方法

早段时间叫我同学帮忙看看南华校友网,看看大家需要些什么样的功能,有个朋友说应该加个新闻的功能。

我当时就准备做个rss聚合来获取新浪搜狐的新闻的,后面就去找新浪新闻的RSS地址,然后无意找到新浪还有这个:http://rss.sina.com.cn/my_sina_web_rss_news.html?url=news/marquee/ddt.xml 可以直接调用新浪的新闻的,所以就放弃了再去写个RSS聚合了,呵呵。

然后马上就布置到南华校友网,因为我一直都是使用的Firefox ,测试也一开始是在Firefox上测试的,一切很好。然后是opera,也很好。最后IE,啪,不行了!老是弹出一个警告框提示页面无法打开,我当时就郁闷,一时也不知道是怎么回事。

我开始以为是我的IE出现了问题(因为基本上只有测试网页兼容和上工行支付宝才会用到IE),因为太久没用它,它给我闹脾气,然后在同学的IE上打开看,也是一样的问题。

于是就打开新浪提供的js地址看,看到在182有这样一句:

document.body.insertBefore( js, null);

而这里在我的网页上,UCH页面我调用了头尾模板,所以在新浪新闻调用之后及</body>标签之前还有内容需要载入的,此时</body>也没有载入,所以上面的代码才会在IE下出现错误。一种解决方法是可以判断页面载入完成了之后在执行这个操作,也可以将上面的语句改成类似:

document.getElementById("n_news").appendChild(js);

n_news是放js调用代码的div容器的id,这样就可以使页面内部数据照代码的顺序执行。

新闻调用的演示页面:http://www.nanhuau.com/news.php

还有,大家可以在调用的时候296行的:

code>document.getElementById(rss_news_sina_div).style.height = rss_news_sina_hight;code>

注释掉,因为这样才能自适用高度,至于宽度希望大家还是指定下,至于使用原新浪的方式还是自己的CSS那就看自己的喜好了,呵呵。

如果不想实用新浪指定的那些样式,可以将SinaRSSWriteCSS这整个函数去掉就可以了

然后将这个js文件保存上传到你的空间上,引用的时候替换新浪的路径到你的路径就可以了。

付:UCHome新闻速递插件下载(随便写的,功能比较简单,除上面说的调用新浪的新闻外,另加了百度的关键词新闻),演示地址在上面写出了,有需要的朋友就下着用吧
下载地址:http://www.iveshuo.cn/d/uchome_news_plug.7z

已有 7 条评论

  1. #1 http://lijian.myopenid.com/ Says:

    July 30th, 2008 at 03:40 pm

    ��

  2. #2 xinjuechen11 Says:

    August 18th, 2008 at 09:38 am

    靠!!还是我的提议好吧!!

  3. #3 luotuo Says:

    August 23rd, 2008 at 12:33 pm

    老大,我是菜鸟,用你的办法还是不行啊,你说的n_news要自己定义吗??

  4. #4 阿肆 Says:

    August 23rd, 2008 at 10:57 pm

    @luotuo:恩,那个是自己文件中的id。

  5. #5 小白 Says:

    September 26th, 2008 at 01:05 pm

    阿肆你好,我在琢磨RSS订阅的事,正好看到你的代码,很受用。
    但是提供的地址无法下载,可否另提供新址?或mail给我?
    感谢:)

  6. #6 阿肆 Says:

    September 26th, 2008 at 02:40 pm

    @小白:我上面提供的方法不是用RSS的,纯js调用了。

    那个提供下载的文件是在uchome中添加获取新浪新闻用到的文件,如果你也要用到可以参考下。

    下载的问题,不知道服务器怎么就不认7z的文件了,我将后缀改了下,你从http://www.iveshuo.cn/d/uchome_news_plug.rar下载就可以了,下载后将后缀改回7z解压缩就可以了。

  7. #7 小白 Says:

    September 27th, 2008 at 02:39 pm

    谢谢阿肆,收到了,我看完了再和你探讨,感谢分享:)

添加新评论

评论