2011-04-19 83 views
2

我最近通過KBX在TomatoFlix中發現了一個錯誤。當用戶登錄上的Netflix,評級旗幟被添加兩次(從非登錄界面不同):KBX擴展調用規則集兩次

Doubled rating banner

我加了一些發到我的規則顯示當規則是獲得被解僱。現在,該代碼如下所示:

rule netflix_loggedin { 
    select when pageview "movies.netflix.com/.*?Movie/(.*)/" setting (movieTitle) 
    pre { 
     title = movieTitle.replace(re/[-_]/g, " "); 
     div = getRatings(title, "", "lycoflix"); 
    } 
    emit <| 
     console.log("TomatoFlix fired!"); 
    |>; 
    before("p.synopsis", div); 
    } 

rule netflix_two { 
    select when pageview "movies.netflix.com/.*?Movie/(.*)/" setting (movieTitle) 
    emit <| 
     console.log("TomatoFlix second rule fired!"); 
    |>; 
} 

JavaScript控制檯顯示以下四行:

TomatoFlix fired! 
TomatoFlix second rule fired! 
TomatoFlix fired! 
TomatoFlix second rule fired! 

這並不是一個書籤或獨立的瀏覽器擴展發生。只在KBX中。

dispatch塊中有兩個領域:www.netflix.commovies.netflix.com

想法?

+1

哪個KBX? Firefox4,Firefox,Chrome還是全部? – Alex 2011-04-19 17:19:23

+0

Chrome。沒有測試任何其他人。 – 2011-04-19 17:28:02

回答

3

雖然我在使用瀏覽器擴展,站點標記和/或代理服務器組合來部署規則集時遇到了雙重規則觸發,但我還沒有遇到只使用KBX的雙重規則觸發。爲了幫助找出問題,是否禁用了所有其他KBX應用程序和所有其他基於Kynetx的瀏覽器擴展?

與此同時,解決方法是在應用程序中放置守護規則。這個守護規則將檢查DOM中是否存在標籤,並且它不存在,然後繼續運行。否則停止。以下是一個示例:

rule CodeMonkey_Hack { 
    select when pageview ".*" 
    pre { 
     tagMonkey = "<div id='CodeMonkey' style='display:none;'>CodeMonkey</div>"; 
     CodeMonkey = 0; 
    } 
    { 
     emit <| 
     CodeMonkey = $KOBJ("#CodeMonkey").length; 
     if (!CodeMonkey) { 
      $KOBJ("body").append(tagMonkey); 
      app = KOBJ.get_application("a169x274"); 
      app.raise_event("impactblog_init", {}); 
     } 
     |>; 
    } 
    always { 
     last 
    } 
} 
+0

我有一些CSS,只是隱藏額外的,它修復了它。雖然奇怪的是雙重射擊現在似乎已經停止了...... – 2011-04-19 18:59:27