Changeset 3478

Show
Ignore:
Timestamp:
12/23/07 15:45:04 (5 years ago)
Author:
cho45
Message:

lang/javascript/userscripts/hatena.haiku.expandrepliestree.user.js:

Safari に対応させた。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/userscripts/hatena.haiku.expandrepliestree.user.js

    r3436 r3478  
    55// ==/UserScript== 
    66 
    7 (function () { with (D()) { 
     7(function (unsafeWindow) { with (D()) { 
    88        const WAIT = 1; 
    9         const ICON = <><![CDATA[ 
    10                 data:image/png;base64, 
    11                 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAD1BMVEX45u/y 
    12                 zt////+za4X///8WHaQkAAAABXRSTlP/////APu2DlMAAAAZdEVYdFNvZnR3 
    13                 YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAARElEQVQI103OORIAQAgCQWD4 
    14                 /5s3cC+yLgtV5aVVyckmkW0PG8YBNK3IDj0k+vlNX3fzbkb8d++q+WrYVLZd 
    15                 1JaeDF8WzSMCBiKqHq0AAAAASUVORK5CYII= 
    16         ]]></>.toString().replace(/\s+/g, ""); 
     9        const ICON = [ 
     10                "data:image/png;base64,", 
     11                "iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAD1BMVEX45u/y", 
     12                "zt////+za4X///8WHaQkAAAABXRSTlP/////APu2DlMAAAAZdEVYdFNvZnR3", 
     13                "YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAARElEQVQI103OORIAQAgCQWD4", 
     14                "/5s3cC+yLgtV5aVVyckmkW0PG8YBNK3IDj0k+vlNX3fzbkb8d++q+WrYVLZd", 
     15                "1JaeDF8WzSMCBiKqHq0AAAAASUVORK5CYII=" 
     16        ].join(""); 
     17 
    1718 
    1819        GM_addStyle([ 
     
    3637                }); 
    3738 
    38                 unsafeWindow.Hatena.Haiku.Pager.dispatchEvent('loadedEntries', entry.parentNode.wrappedJSObject); 
     39                unsafeWindow.Hatena.Haiku.Pager.dispatchEvent('loadedEntries', entry.parentNode.wrappedJSObject || entry.parentNode); 
    3940                return entry; 
    4041        } 
    4142 
    4243        function expandChildReplies (entry) { 
    43                 var body = $X("div[@class='list-body']", entry)[0]; 
     44                var body = $X("./div[@class='list-body']", entry)[0]; 
    4445                return parallel( 
    45                         $X("div[@class='info']/span[@class='replies']/a[@href]", body).map(function (a) { 
     46                        $X("./div[@class='info']/span[@class='replies']/a[@href]", body).map(function (a) { 
    4647                                a.style.opacity = "0.6"; 
    4748                                // don't show if this was showed entry 
     
    6364                                function appendAndLoadNext (e) { 
    6465                                        a.style.opacity = "0.2"; 
    65                                         $X("div[@class='list-body']/div/a[img[@src='/images/icon-replylink.gif']]", e)[0].style.opacity = "0.2"; 
     66                                        $X("./div[@class='list-body']/div/a[img[@src='/images/icon-replylink.gif']]", e)[0].style.opacity = "0.2"; 
    6667                                        body.appendChild(applyJavaScript(e)); 
    6768                                        return wait(WAIT).next(function () { 
     
    8687 
    8788        function expandReplies (entry) { 
    88                 var a    = $X("div[@class='list-body']/div/a[img[@src='/images/icon-replylink.gif']]", entry)[0]; 
     89                var a    = $X("./div[@class='list-body']/div/a[img[@src='/images/icon-replylink.gif']]", entry)[0]; 
    8990                var raw_href = $X("string(@href)", a); 
    9091                var es = $X("//div[@class='entry' and .//span[@class='timestamp']/a[@href = '"+raw_href+"']]"); 
     
    110111                        if (a) a.style.opacity = "0.2"; 
    111112                        e = applyJavaScript(e); 
    112                         var body = $X("div[@class='list-body']", e)[0]; 
     113                        var body = $X("./div[@class='list-body']", e)[0]; 
    113114                        entry.parentNode.insertBefore(e, entry); 
    114115                        body.appendChild(entry); 
     
    126127                        var entries = $X("//div[@class='entries']/div[@class='entry'][.//img[starts-with(@src, '/images/icon-repl')]]"); 
    127128                        loop(entries.length, function (n) { 
    128                                 var e = entries[n]; 
    129                                 if (e.wrappedJSObject._gm_expandreplies_applied) return; 
    130                                 e.wrappedJSObject._gm_expandreplies_applied = true; 
     129                                var e = entries[n].wrappedJSObject || entries[n]; 
     130                                if (e._gm_expandreplies_applied) return; 
     131                                e._gm_expandreplies_applied = true; 
    131132                                var handler = function () { 
    132133                                        if (window.getSelection().toString()) return; 
     
    145146                                // $X("div/div[@class='body']", e)[0].addEventListener("click", handler, false); 
    146147 
    147                                 var info = $X("div/div[@class='info']", e)[0]; 
     148                                var info = $X("./div/div[@class='info']", e)[0]; 
    148149                                info.appendChild(h("<span class='expand'><a href='javascript:void(156)'>Expand</a></span>").firstChild); 
    149150                                info.addEventListener("click", handler, false); 
     
    202203// $X(exp, context, type); 
    203204function $X (exp, context, type /* want type */) { 
     205        // console.log(String(exp)); 
    204206        if (typeof context == "function") { 
    205207                type    = context; 
     
    306308                        value = self.callback[okng].call(self, value); 
    307309                } catch (e) { 
     310                        alert(e); 
    308311                        next  = "ng"; 
    309312                        value = e; 
     
    468471}// End of JSDeferred 
    469472 
    470 })(); 
     473})(this.unsafeWindow || this); 
     474 
     475