• 滔滔的未公开 js api

    今天叽歪也挂了。好像像样的独立微博已经全没了。

    腾讯的滔滔还活着,不知道能不能保持下去。今天去挖了一下它的 API ,因为腾讯是没开放 API 的习惯的。

    地址:

    http://www.taotao.com/cgi-bin/msgj?qq=QQ号&num=10&t=0

    调用例子:

    <ul id="taotao">
    </ul>
      <script type="text/javascript">
      function doApi(obj) {
        for (i = 0; i<obj.posts.length; i++)
        {
            var li = document.createElement('LI');
            li.innerHTML = obj.posts[i].cn;
            document.getElementById('taotao').appendChild(li);
        }
      }
      </script>
      <script type="text/javascript" src="http://www.taotao.com/cgi-bin/msgj?qq=QQ号&num=10&t=0"></script>

    其实看看那个 api 的输出就知道怎么用了。

    不过滔滔确实不如另几个。界面不好看,浏览器兼容不好,也不公开api。

  • Firefox 的 .submit() 问题

    碰到一个很郁闷的问题。一个在 iframe 里调用父页面的 js 来提交表单,在其他浏览器都正常,但 firefox 上却提交不了。在 firebug 里直接调用可以,在父页面上用 js 调用也行。也许是 firefox 的防 csrf 功能的影响吧。

    重现代码:

    test1.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title>test1</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     </head>
     <body>
     <script type="text/javascript">
     <!--
        function foo() {
            alert('foo');
            document.testForm.btn.value='aaaa';
            document.testForm.submit();
        }
     //-->
     </script>
     <form method="post" action="test2.php" name="testForm" target="ifr">
        <input type="submit" name='btn'/>
     </form>
      <iframe src='' name="ifr" id="ifr"></iframe>
     </body>
    </html>

    test2.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title>test2</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     </head>
     <body>
     <?php
     print_r($_POST);
     ?>
    <script type="text/javascript">
    <!--
        <?php if (isset($_POST['btn'])):?>
        alert('111');
        parent.foo();
        <?php else: ?>
        alert('000');
        <?php endif; ?>
    //-->
    </script>
     </body>
    </html>

    可以试试看在不同浏览器上的差异。

    把 .submit() 换成 submit 控件的 .click() 也是一样。

    最后还是用setTimeout(...., 1); 跳出调用栈来执行 .submit() 来解决。

     

    Tags: JavaScript
  • Chrome 的数组遍历顺序问题

    昨天发现 Chrome 在遍历一个键名为数字形式的字符串的对象时,并不是像其他浏览器一样按定义的顺序。

      <script type="text/javascript">
    var hash = {'3':3,'1':1,'5':5,'2':2,'4':4};
    var s = '';
    for (var k in hash) {
    s+= k+':'+hash[k]+"\n";
    }
    alert(s);
      </script>

    比如这个代码,在其他浏览器里都是31524,在 Chrome 里却是 12345 。当然 Chrome 也不是就把它们排序了,试试其他的数字,比如 {'7553':1,'5441':2,'77335':3,'222':4,'1114':5} 。

    去看了一下 ECMAScript 草案,倒也没规定对象属性的遍历的顺序什么的。所以在遍历对象的时候最好不要依赖于属性的特定顺序。

     

     

日历

关于神仙

神仙

世人都晓神仙好啊~~