CrazyJeux

RainbowDDB modos fix

Apr 14th, 2016
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        RainbowDDB
  3. // @namespace   CrazyJeux/Daring-Do
  4. // @author      CrazyJeux/Daring-Do
  5. // @match       *://www.jeuxvideo.com/*
  6. // @match       *://m.jeuxvideo.com/*
  7. // @match       *://www.forumjv.com/*
  8. // @description Ajoute un contour autour des messages signalés. La couleur change selon qui a effectué l'alerte ou si l'alerte a été traitée.
  9. // @version     20
  10. // @grant       none
  11. // ==/UserScript==
  12.  
  13. //Topic dédié : http://www.jeuxvideo.com/forums/42-1000021-39882332-1-0-1-0-rainbowddb-reperez-tous-les-messages-signales-meme-les-votres.htm
  14.  
  15. //Explications : http://image.noelshack.com/fichiers/2015/25/1434754809-explications-final.png
  16.  
  17. //Ajoutez ou retirez ici les motifs de ban complets qui doivent conduire au masquage automatique du message.
  18. var reasonsToHide = [];
  19.  
  20. //Enlevez les "//" des trois lignes ci-dessous pour cacher tous les messages signalés dont la raison a pu être déterminée.
  21. //reasonsToHide = reasonsToHide.concat("Pédopornographie", "Incitation à la haine, discrimination", "Mise en danger des personnes", "Diffamation, menaces", "Piratage, non respect des droits d'auteurs", "Apologie de comportements illégaux", "Données personnelles");
  22. //reasonsToHide = reasonsToHide.concat("Pornographie", "Insultes", "Flood de masse", "Raids, mass-dislikes et attaques de sites", "Spoilers");
  23. //reasonsToHide = reasonsToHide.concat("Message inopportun", "Doublons", "Publicité", "Règles spécifiques à chaque forum");
  24.  
  25. var colors = {"byother": "orange",
  26.     "byme": "red",
  27.     "ishandled": "lightgreen",
  28.     "isadmin": "#9393f5"};
  29. var borderWidthMessage = "5px";
  30. var borderWidthTopic = "2px";
  31. var topicsToo = true;
  32.  
  33. var DEBUG = true;
  34.  
  35. function log(str) {
  36.     if (DEBUG) {
  37.         console.log(str);
  38.     }
  39. }
  40.  
  41. function ajaxReport(link, element, width, type) {
  42.     var xmlhttp = new XMLHttpRequest();
  43.     xmlhttp.onreadystatechange = function () {
  44.         if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
  45.             var reportDiv = document.createElement('div');
  46.             reportDiv.innerHTML = xmlhttp.responseText;
  47.             reportDiv.style.display = "none";
  48.             document.body.appendChild(reportDiv);
  49.             var reportTextarea = reportDiv.querySelector("#signalement_commentaire");
  50.             if (reportTextarea === null) {
  51.                 log("reportTextarea is null");
  52.                 var generic = reportDiv.querySelector(".modal-generic-content");
  53.                 if (reportDiv.querySelector(".g-recaptcha") === null &&
  54.                     //The condition below is for moderators (who don't have a captcha)
  55.                    generic.innerHTML.indexOf("Ce contenu a déjà été signalé par un utilisateur") < 0) {
  56.                     log("this message wasn't reported by someone else");
  57.                     if (generic === null) {
  58.                         log("generic is null");
  59.                         return;
  60.                     }
  61.                     if (generic.innerHTML.indexOf("Vous avez déjà signalé ce contenu") >= 0) {
  62.                         styleElement(element, "byme", width, type);
  63.                         return;
  64.                     }
  65.                     if (generic.innerHTML.indexOf("Cet utilisateur ne peut pas être signalé") >= 0) {
  66.                         styleElement(element, "isadmin", width, type);
  67.                         return;
  68.                     }
  69.                     if (generic.innerHTML.indexOf("Ce contenu a déjà été modéré") >= 0) {
  70.                         styleElement(element, "ishandled", width, type);
  71.                         return;
  72.                     }
  73.                 } else {
  74.                     log("this message was reported by someone else");
  75.                     styleElement(element, "byother", width, type);
  76.                     if (type === "message") {
  77.                         var reason = reportDiv.querySelector(".col-md-10");
  78.                         if (reason !== null) {
  79.                             reason = reason.innerHTML;
  80.                             log("reason is not null: '"+reason+"'");
  81.                             var options = element.querySelector(".bloc-options-msg");
  82.                             /*
  83.                             var info = document.createElement("div");
  84.                             info.innerHTML = reason;
  85.                             info.style.float = "left";
  86.                             info.style.color = "red";
  87.                             info.style.fontWeight = "bold";
  88.                             info.style.top = "12px";
  89.                             info.style.marginLeft = "15px";
  90.                             info.style.position = "relative";
  91.                             options.parentNode.insertBefore(info, options);
  92.                             */
  93.                             var msg = element.querySelector(".bloc-contenu .txt-msg");
  94.                             var p = Array.prototype.slice.call(msg.querySelectorAll("p"));
  95.                             p.forEach(function(el) {
  96.                                 var klass = el.getAttribute("class");
  97.                                 if (klass === null) {
  98.                                     klass = "";
  99.                                 }
  100.                                 klass += " maybeToHide";
  101.                                 el.setAttribute("class", klass);
  102.                             });
  103.                             var toHide = Array.prototype.slice.call(element.querySelectorAll(".maybeToHide"));
  104.                             var wrapper = document.createElement("p");
  105.                             var info = document.createElement("span");
  106.                             info.innerHTML = "Message signalé pour " + reason.charAt(0).toLowerCase() + reason.slice(1);
  107.                             info.style.color = "red";
  108.                             info.style.fontWeight = "bold";
  109.                             info.style.top = "12px";
  110.                             wrapper.appendChild(info);
  111.  
  112.                             var shouldHide = false;
  113.                             var hideShowMsg = document.createElement("p");
  114.                             if (reasonsToHide.indexOf(reason) >= 0) {
  115.                                 shouldHide = true;
  116.                                 toHide.forEach(function(el) {
  117.                                     el.style.display = "none";
  118.                                 });
  119.                                 wrapper.appendChild(document.createElement("br"));
  120.                                 hideShowMsg.innerHTML = "Afficher le contenu du message";
  121.                                 hideShowMsg.style.marginTop = "15px";
  122.                                 hideShowMsg.style.cursor = "pointer";
  123.                                 hideShowMsg.style.textDecoration = "underline";
  124.                                 hideShowMsg.style.marginBottom = "0px";
  125.                                 wrapper.appendChild(hideShowMsg);
  126.                                 wrapper.style.marginBottom = "0px";
  127.                             }
  128.  
  129.                             msg.insertBefore(wrapper, msg.firstChild);
  130.  
  131.                             if (shouldHide === true) {
  132.                                 var isShown = false;
  133.  
  134.                                 hideShowMsg.onclick = function() {
  135.                                     if (!isShown) {
  136.                                         var r = confirm("Voulez-vous vraiment afficher ce message ?\n\n" +
  137.                                                         "Vous pouvez changer les motifs de signalement conduisant au masquage du message.\n\n" +
  138.                                                         "Pour cela, il faut modifier la variable reasonsToHide au début du code du script.");
  139.                                         if (r === false) {
  140.                                             return;
  141.                                         }
  142.                                         toHide.forEach(function(el) {
  143.                                             el.style.display = "initial";
  144.                                         });
  145.                                         hideShowMsg.innerHTML = "Cacher le contenu du message";
  146.                                         wrapper.style.marginBottom = "";
  147.                                         isShown = true;
  148.                                     } else {
  149.                                         toHide.forEach(function(el) {
  150.                                             el.style.display = "none";
  151.                                         });
  152.                                         hideShowMsg.innerHTML = "Afficher le contenu du message";
  153.                                         wrapper.style.marginBottom = "0px";
  154.                                         isShown = false;
  155.                                     }
  156.                                 };
  157.                             }
  158.                         }
  159.                     }
  160.                 }
  161.             }
  162.             reportDiv.remove();
  163.         }
  164.     };
  165.     xmlhttp.open("GET", link, true);
  166.     xmlhttp.send();
  167. }
  168.  
  169. function checkMessage(href, callback) {
  170.     var xmlhttp = new XMLHttpRequest();
  171.     xmlhttp.onreadystatechange = function () {
  172.         if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
  173.             var reportDiv = document.createElement('div');
  174.             reportDiv.innerHTML = xmlhttp.responseText;
  175.             reportDiv.style.display = "none";
  176.             document.body.appendChild(reportDiv);
  177.             var textarea = reportDiv.querySelector("#signalement_commentaire");
  178.             if (textarea !== null) {
  179.                 log("textarea is not null");
  180.                 callback('isnotreported');
  181.                 return;
  182.             }
  183.             var errorDiv = reportDiv.querySelector(".alert.alert-danger");
  184.             if (errorDiv !== null) {
  185.                 log("errorDiv is not null, errorDiv.innerHTML:\n"+errorDiv.innerHTML);
  186.                 if (errorDiv.innerHTML.indexOf("Ce contenu a déjà été modéré") >= 0) {
  187.                     callback('ishandled');
  188.                     return;
  189.                 }
  190.                 if (errorDiv.innerHTML.indexOf("Ce contenu a déjà été signalé") >= 0) {
  191.                     callback('isreported');
  192.                     return;
  193.                 }
  194.                 if (errorDiv.innerHTML.indexOf("Cet utilisateur ne peut pas être signalé") >= 0) {
  195.                     callback('isadmin');
  196.                     return;
  197.                 }
  198.             }
  199.         }
  200.     };
  201.     xmlhttp.open("GET", href, true);
  202.     xmlhttp.send();
  203. }
  204.  
  205. function inIframe() {
  206.     try {
  207.         return window.self !== window.top;
  208.     } catch (e) {
  209.         return true;
  210.     }
  211. }
  212.  
  213. function styleElement(element, info, borderWidth, elementType) {
  214.     //element.style.borderWidth = borderWidth + "!important";
  215.  
  216.     var el = null;
  217.     var prevStyle = "";
  218.     if (elementType === "topic") {
  219.         el = element.querySelector("a.topic-title");
  220.         prevStyle = el.getAttribute("style");
  221.         if (typeof prevStyle === "undefined" || prevStyle === null) {
  222.             prevStyle = "";
  223.         }
  224.     }
  225.  
  226.     switch (info) {
  227.         case "ishandled":
  228.             if (elementType === "topic") {
  229.                 el.setAttribute("style", prevStyle + ";color: " + colors.ishandled + " !important;");
  230.             } else {
  231.                 element.style.cssText += ";box-shadow: 0 0 " + borderWidth + " " + borderWidth + " " + colors.ishandled + " !important;";
  232.             }
  233.             break;
  234.         case "byme":
  235.             if (elementType === "topic") {
  236.                 //element.style.cssText += ";border: " + borderWidth + " solid " + colors.byme + " !important;";
  237.                 el.setAttribute("style", prevStyle + ";color: " + colors.byme + " !important;");
  238.             } else {
  239.                 element.style.cssText += ";box-shadow: 0 0 " + borderWidth + " " + borderWidth + " " + colors.byme + " !important;";
  240.             }
  241.             break;
  242.         case "byother":
  243.             if (elementType === "topic") {
  244.                 //element.style.cssText += ";border: " + borderWidth + " solid " + colors.byother + " !important;";
  245.                 el.setAttribute("style", prevStyle + ";color: " + colors.byother + " !important;");
  246.             } else {
  247.                 element.style.cssText += ";box-shadow: 0 0 " + borderWidth + " " + borderWidth + " " + colors.byother + " !important;";
  248.             }
  249.             break;
  250.         case "isadmin":
  251.             if (elementType === "topic") {
  252.                 //element.style.cssText += ";border: " + borderWidth + " solid " + colors.isadmin + " !important;";
  253.                 //el.setAttribute("style", prevStyle + ";color: " + colors.isadmin + " !important;");
  254.             } else {
  255.                 //element.style.cssText += ";box-shadow: 0 0 " + borderWidth + " " + borderWidth + " " + colors.isadmin + " !important;";
  256.             }
  257.             break;
  258.         default:
  259.             var err = "Erreur fonction styleElement : info='" + info + "'";
  260.             alert(err);
  261.             throw new Error(err);
  262.     }
  263. }
  264.  
  265. function toCall() {
  266.     //Our own messages
  267.     if (window.location.hostname === "www.jeuxvideo.com") {
  268.         var deleteButtons = document.querySelectorAll(".picto-msg-croix");
  269.         if (deleteButtons.length > 0) {
  270.             var requestsForMyMessages = function(origin) {
  271.                 var i = 0;
  272.                 (function loop(i) {
  273.                     if (i >= deleteButtons.length) {
  274.                         return;
  275.                     }
  276.                     var message = deleteButtons[i].parentNode;
  277.                     while (message.getAttribute("class").indexOf("bloc-message-forum") < 0) {
  278.                         message = message.parentNode;
  279.                     }
  280.                     var messAttr = message.getAttribute("data-handledbyrainbowddb");
  281.                     var isHandled = (messAttr !== null && messAttr === "true");
  282.                     if (!isHandled) {
  283.                         message.setAttribute("data-handledbyrainbowddb", "true");
  284.                         iframeMessages.contentWindow.postMessage({'messageid': message.getAttribute("data-id")}, origin);
  285.                     }
  286.  
  287.                     setTimeout(function () {
  288.                         loop(i + 1);
  289.                     }, 5);
  290.                 })(i);
  291.             };
  292.  
  293.             var handleResponseFromMobileJVCForMessages = function (e) {
  294.                 var origin = e.origin || e.originalEvent.origin;
  295.                 if (origin !== 'http://m.jeuxvideo.com') {
  296.                     return;
  297.                 }
  298.                 if (e.data.hasOwnProperty("started")) {
  299.                     if (e.data.started === true) {
  300.                         requestsForMyMessages(origin);
  301.                     }
  302.                     return;
  303.                 }
  304.                 if (e.data.hasOwnProperty("messageid")) {
  305.                     var message = document.querySelector("[data-id='" + e.data.messageid + "']");
  306.  
  307.                     if (e.data.hasOwnProperty("isnotreported")) {
  308.                         return;
  309.                     }
  310.                     if (e.data.hasOwnProperty("ishandled")) {
  311.                         styleElement(message, "ishandled", borderWidthMessage, "message");
  312.                         return;
  313.                     }
  314.                     if (e.data.hasOwnProperty("isreported")) {
  315.                         styleElement(message, "byother", borderWidthMessage, "message");
  316.                         return;
  317.                     }
  318.                     if (e.data.hasOwnProperty("isadmin")) {
  319.                         styleElement(message, "isadmin", borderWidthMessage, "message");
  320.                         return;
  321.                     }
  322.                 }
  323.             };
  324.  
  325.             window.addEventListener("message", handleResponseFromMobileJVCForMessages, false);
  326.  
  327.             var mobileURL;
  328.             var index = window.location.pathname.substring(1).indexOf("/");
  329.             var firstDirectory = window.location.pathname.substring(1, index + 1);
  330.             //Direct message
  331.             if (firstDirectory !== "forums") {
  332.                 mobileURL = document.querySelector(".btn.btn-actu-new-list-forum").parentNode.href.replace("www.jeuxvideo.com", "m.jeuxvideo.com");
  333.             } else { //Message in a topic
  334.                 var desktopURL = document.location.href;
  335.                 mobileURL = desktopURL.replace("www.jeuxvideo.com", "m.jeuxvideo.com");
  336.             }
  337.  
  338.             var iframeMessages = document.createElement("iframe");
  339.             iframeMessages.style.display = "none";
  340.             document.body.appendChild(iframeMessages);
  341.             iframeMessages.src = mobileURL;
  342.         }
  343.     }
  344.  
  345.     //Other people's messages
  346.     var reportButtons = document.getElementsByClassName("picto-msg-exclam");
  347.     var i = 0;
  348.     (function loop(i) {
  349.         log("reportButton #"+i+"/"+reportButtons.length);
  350.         if (i >= reportButtons.length) {
  351.             return;
  352.         }
  353.         var link = reportButtons[i].getAttribute("data-selector");
  354.         var message = reportButtons[i].parentNode;
  355.         while (message.className.indexOf("bloc-message-forum") < 0) {
  356.             message = message.parentNode;
  357.         }
  358.         var messAttr = message.getAttribute("data-handledbyrainbowddb");
  359.         var isHandled = (messAttr !== null && messAttr === "true");
  360.         log("is link ("+link+") already handled? "+isHandled);
  361.         if (!isHandled) {
  362.             message.setAttribute("data-handledbyrainbowddb", "true");
  363.  
  364.             log("before ajaxReport for link '"+link+"'");
  365.             ajaxReport(link, message, borderWidthMessage, "message");
  366.         }
  367.  
  368.         setTimeout(function () {
  369.             loop(i + 1);
  370.         }, 5);
  371.     })(i);
  372.  
  373.     //Topics
  374.     if (topicsToo === true) {
  375.         var table = document.querySelector(".topic-list");
  376.         if (table !== null) {
  377.             var topicRows = table.querySelectorAll("li[data-id]");
  378.  
  379.             var topicRequests = [];
  380.  
  381.             var handleResponseFromMobileJVCForTopics = function (e) {
  382.                 var origin = e.origin || e.originalEvent.origin;
  383.                 if (origin !== 'http://m.jeuxvideo.com') {
  384.                     return;
  385.                 }
  386.                 log("result in listener: "+JSON.stringify(e.data, null, 4));
  387.                 if (e.data.hasOwnProperty("started")) {
  388.                     if (e.data.started === true) {
  389.                         var resFilter = topicRequests.filter(function(obj) {
  390.                             return obj.url === e.data.url;
  391.                         });
  392.                         if (resFilter.length > 0) {
  393.                             resFilter[0].func(origin);
  394.                         }
  395.                     }
  396.                     return;
  397.                 }
  398.                 if (e.data.hasOwnProperty("topicid")) {
  399.                     var row = null;
  400.                     for (var j = 0; j < topicRows.length; j++) {
  401.                         var curDataId = topicRows[j].getAttribute("data-id");
  402.                         if (curDataId === e.data.topicid) {
  403.                             row = topicRows[j];
  404.                             break;
  405.                         }
  406.                     }
  407.                     if (row !== null) {
  408.                         if (e.data.hasOwnProperty("isnotreported")) {
  409.                             return;
  410.                         }
  411.                         if (e.data.hasOwnProperty("ishandled")) {
  412.                             styleElement(row, "ishandled", borderWidthTopic, "topic");
  413.                             return;
  414.                         }
  415.                         if (e.data.hasOwnProperty("isreported")) {
  416.                             styleElement(row, "byother", borderWidthTopic, "topic");
  417.                             return;
  418.                         }
  419.                         if (e.data.hasOwnProperty("isadmin")) {
  420.                             styleElement(row, "isadmin", borderWidthTopic, "topic");
  421.                             return;
  422.                         }
  423.                     }
  424.                 }
  425.             };
  426.  
  427.             window.addEventListener("message", handleResponseFromMobileJVCForTopics, false);
  428.  
  429.             for (var i = 0; i < topicRows.length; i++) {
  430.                 var link = topicRows[i].querySelector("a");
  431.                 if (link === null) {
  432.                     continue;
  433.                 }
  434.                 var href = link.href;
  435.  
  436.                 var topicAuthorNickname = null;
  437.                 var topicAuthorArea = topicRows[i].querySelector(".topic-author");
  438.                 if (topicAuthorArea !== null) {
  439.                     topicAuthorNickname = topicAuthorArea.textContent.trim();
  440.                 }
  441.                 var currentAuthorNickname = null;
  442.                 var currentAuthorArea = document.querySelector(".account-pseudo");
  443.                 if (currentAuthorArea !== null) {
  444.                     currentAuthorNickname = currentAuthorArea.textContent.trim();
  445.                 }
  446.                 var myTopic = false;
  447.                 if (topicAuthorNickname !== null && currentAuthorNickname !== null) {
  448.                     if (topicAuthorNickname.toLowerCase() === currentAuthorNickname.toLowerCase()) {
  449.                         myTopic = true;
  450.                     }
  451.                 }
  452.                 if (myTopic === false) {
  453.                     (function(href, topic) {
  454.                         var xmlhttp = new XMLHttpRequest();
  455.                         xmlhttp.onreadystatechange = function () {
  456.                             if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
  457.                                 var topicDiv = document.createElement('div');
  458.                                 topicDiv.innerHTML = xmlhttp.responseText;
  459.                                 var mess = topicDiv.querySelector(".bloc-message-forum");
  460.                                 if (mess !== null) {
  461.                                     topicDiv.innerHTML = mess.outerHTML;
  462.                                     var reportBtn = topicDiv.querySelector(".picto-msg-exclam");
  463.                                     if (reportBtn !== null) {
  464.                                         var link = reportBtn.getAttribute("data-selector");
  465.                                         ajaxReport(link, topic, borderWidthTopic, "topic");
  466.                                     }
  467.                                 }
  468.                             }
  469.                         };
  470.                         xmlhttp.open("GET", href, true);
  471.                         xmlhttp.send();
  472.                     })(href, topicRows[i]);
  473.                 } else { //One of my topics
  474.                     var topicID = topicRows[i].getAttribute("data-id");
  475.                     var iframeTopic = document.createElement("iframe");
  476.                     (function (iframeTopic, topicID, href, link) {
  477.                         var mobileURL = href.replace("www", "m");
  478.                         log("my topic: '"+mobileURL+"', topicID='"+topicID+"'");
  479.                         var requestForATopic = function (origin) {
  480.                             log("requestForATopic for my topic: '"+mobileURL+"', topicID='"+topicID+"'");
  481.                             iframeTopic.contentWindow.postMessage({'topicid': topicID, 'topicname': link.textContent.trim()}, origin);
  482.                         };
  483.                         topicRequests.push({"url": mobileURL, "func": requestForATopic});
  484.                         iframeTopic.style.display = "none";
  485.                         document.body.appendChild(iframeTopic);
  486.                         iframeTopic.src = mobileURL;
  487.                     })(iframeTopic, topicID, href, link);
  488.                 }
  489.             }
  490.         }
  491.     }
  492. }
  493.  
  494.  
  495. if (window.location.hostname.indexOf("forumjv") < 0) {
  496.     document.domain = "jeuxvideo.com";
  497. }
  498. if (window.location.hostname !== "m.jeuxvideo.com") {
  499.  
  500.     toCall();
  501.  
  502.     addEventListener('instantclick:newpage', toCall);
  503.  
  504.     (function btnLoop() {
  505.         var moreCommentsButtons = document.querySelectorAll(".link-plus-de-comm");
  506.         for (var i=0; i<moreCommentsButtons.length; i++) {
  507.             var btnAttr = moreCommentsButtons[i].getAttribute("data-handledbyrainbowddb");
  508.             var isHandled = (btnAttr !== null && btnAttr === "true");
  509.             if (!isHandled) {
  510.                 moreCommentsButtons[i].setAttribute("data-handledbyrainbowddb", "true");
  511.  
  512.                 moreCommentsButtons[i].onclick = function() {
  513.                     (function loop() {
  514.                         var newElements = document.querySelectorAll(".bloc-message-forum:not([data-handledbyrainbowddb])");
  515.                         if (newElements.length === 0) {
  516.                             setTimeout(loop, 50);
  517.                         } else {
  518.                             btnLoop();
  519.                             toCall();
  520.                         }
  521.                     })();
  522.                 };
  523.             }
  524.         }
  525.     })();
  526. } else {
  527.     if (inIframe()) {
  528.         var handleResponseFromDesktopJVC = function (e) {
  529.             var origin = e.origin || e.originalEvent.origin;
  530.             if (origin !== 'http://www.jeuxvideo.com') {
  531.                 return;
  532.             }
  533.             log("e.data in iframe: "+JSON.stringify(e.data, null, 4));
  534.             //Message
  535.             if (e.data.hasOwnProperty("messageid")) {
  536.                 var realId = "#post_" + e.data.messageid;
  537.                 var message = document.querySelector(realId);
  538.                 if (message === null) {
  539.                     return;
  540.                 }
  541.                 var alertButton = message.querySelector(".picto-msg-exclam");
  542.                 if (alertButton === null) {
  543.                     log("alertButton is null");
  544.                     return;
  545.                 }
  546.                 var href = alertButton.parentNode.getAttribute("href");
  547.                 checkMessage(href, function (ret) {
  548.                     var result = {'messageid': e.data.messageid};
  549.                     result[ret] = true;
  550.                     e.source.postMessage(result, origin);
  551.                 });
  552.             }
  553.  
  554.             //Topic
  555.             if (e.data.hasOwnProperty("topicid")) {
  556.                 var message = document.querySelector(".post");
  557.                 if (message !== null) {
  558.                     var alertButton = message.querySelector(".picto-msg-exclam");
  559.                     if (alertButton !== null) {
  560.                         var href = alertButton.parentNode.getAttribute("href");
  561.                         checkMessage(href, function (ret) {
  562.                             var result = {'topicid': e.data.topicid, 'topicname': e.data.topicname};
  563.                             result[ret] = true;
  564.                             log("result in iframe: "+JSON.stringify(result, null, 4));
  565.                             e.source.postMessage(result, origin);
  566.                         });
  567.                     } else {
  568.                         log("alert btn is null, message html:\n"+message.outerHTML);
  569.                     }
  570.                 } else {
  571.                     log("message is null");
  572.                 }
  573.             }
  574.         };
  575.  
  576.         window.addEventListener("message", handleResponseFromDesktopJVC, false);
  577.  
  578.         window.parent.postMessage({"started": true, "url": window.location.href}, "*");
  579.     }
  580. }
Advertisement
Add Comment
Please, Sign In to add comment