web-dev-qa-db-fra.com

Tumblr ajoute le javascript à la fin du post

Pouvez-vous identifier ce que fait le javascript suivant? Et mieux, d'où vient-il?

Souvent, lorsque je rédige un message texte sur Tumblr, celui-ci est ajouté à la fin. Il n'apparaît pas du tout dans l'éditeur WYSIWYG, mais apparaît sous la forme d'une série de petites cases grises à la fin du message lorsqu'il est publié, et s'affiche si je clique sur "HTML" dans l'éditeur - le code suivant apparaît sous le texte réel de la publication dans la source brute éditable de la publication.

Est-ce que cette extension de Firefox dérange l'éditeur? Certains virus? Un bug de Tumblr? Une sorte de fonctionnalité que je ne connais pas? Normalement, je modifie toujours le code et le dépouille manuellement, mais je préférerais savoir comment il est arrivé là-bas ...

    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    function decodeContentTags(str) {
        var div = document.createElement("div");
        div.innerHTML = str;
        return div.innerHTML;
    }
    // ]]]]><![CDATA[>
    // ]]></script>
    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    function newTagLinks(postID, tags) {
        tag = tags.split(",");
        postTags = "post_tags_" + postID;
        $(postTags).innerHTML = "";
        for (i = 0; i < tag.length; i++) {
        var addLabel = document.createElement("a");
        addLabel.setAttribute("href", "/tagged/" + tag[i]);
        addLabel.innerHTML = "#" + tag[i];
        $(postTags).appendChild(addLabel);
        }
    }
    // ]]]]><![CDATA[>
    // ]]></script>
    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    function displayTags(postID) {
        existingTags = "";
        hasTags = true;
        if (String($("post_tags_" + postID)) != "null") {
        for (i = 0; i < $("post_tags_" + postID).childElements().length; i++) {
            existingTags += $("post_tags_" + postID).down(i).innerHTML.substr(1) + ",";
        }
        }
        existingTags = existingTags.slice(0, -1);
        tags = Prompt("Tags", existingTags);
        if (tags != null) {
        $("tagEdit-" + postID).innerHTML = "working...";
        $("tagEdit-" + postID).removeAttribute("onClick");
        editTags(postID, tags);
        }
    }
    // ]]]]><![CDATA[>
    // ]]></script>
    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    function editTags(postID, tags) {
        var editPost = "/edit/" + postID;
        new Ajax.Request(editPost, {onSuccess: function (response) {r = response.responseText;dataStart = r.indexOf("<form");dataEnd = r.indexOf("");html = r.substring(dataStart, dataEnd);var inputs = html.match(/<input[^>]*>/g);var textareas = html.match(/<textarea[^>]*>[^<]*<\/textarea>/g);var params = {};var name;for (i = 0; i < inputs.length; i++) {name = inputs[i].match(/name="([^"]*)"/);if (name) {if (String(inputs[i].match(/value="([^"]*)"/)) == "null") {params[name[1]] = null;} else {params[name[1]] = decodeContentTags(inputs[i].match(/value="([^"]*)"/)[1]).unescapeHTML();}}}for (i = 0; i < textareas.length; i++) {name = textareas[i].match(/name="([^"]*)"/);if (name && !/id="custom_Tweet"/.test(textareas[i])) {params[name[1]] = decodeContentTags(textareas[i].replace(/<(?!\s*\/?\s*p\b)[^>]*>/gi, "")).unescapeHTML();}}params['post[tags]'] = tags;delete params['post[promotion_type]'];delete params.preview_post;new Ajax.Request(editPost, {method: "post", parameters: params, onSuccess: function (transport) {newTagLinks(postID, tags);$("tagEdit-" + postID).innerHTML = "done!";$("tagEdit-" + postID).setAttribute("onClick", "displayTags(" + postID + ")");setTimeout(function () {$("tagEdit-" + postID).innerHTML = "edit tags";}, 1500);}, onFailure: function () {$("tagEdit-" + postID).innerHTML = "x_x";$("tagEdit-" + postID).setAttribute("title", "Please reload!");}});}});
    }
    // ]]]]><![CDATA[>
    // ]]></script>
    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    function addTagEdit(postControl, postID) {
        var addLabel = document.createElement("a");
        addLabel.setAttribute("id", "tagEdit-" + postID);
        addLabel.setAttribute("style", "cursor: pointer;");
        addLabel.setAttribute("onClick", "displayTags(" + postID + ")");
        addLabel.innerHTML = "edit tags";
        postControl.appendChild(addLabel);
    }
    // ]]]]><![CDATA[>
    // ]]></script>
    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    function getPostsTags(startNum) {
        var allPosts = $$("li.is_mine.:not(li.new_post)");
        for (var i = startNum; i < allPosts.length; i++) {
        postID = allPosts[i].getAttribute("id").substr(5);
        addTagEdit(allPosts[i].down().next(), postID);
        }
        return allPosts.length + startNum;
    }
    // ]]]]><![CDATA[>
    // ]]></script>
    <script type="text/javascript">// <![CDATA[
    // <![CDATA[
    (function mainTags() {
        var startNum = 0;
        var pageLength = $$("li.is_mine.:not(li.new_post)").length;
        startNum = getPostsTags(startNum);
        Ajax.Responders.register({onLoaded: function () {checkPage = setInterval(function () {var newLength = $$("li.is_mine.:not(li.new_post)").length;if (pageLength < newLength) {getPostsTags(pageLength);pageLength = newLength;}window.clearInterval(checkPage);return;}, 5000);}});
    })();
    // ]]]]><![CDATA[>
    // ]]></script>
1
SF.

Le morceau de code contient différentes fonctions, comme vous pouvez le voir. Selon leurs noms et ce qu'ils font, il semblerait qu'ils servent simplement à générer les zones grises qui seraient des balises. Les autres fonctions consistent à éditer la ou les balises.

1
Edwin Lambregts

Ce n'est pas un virus ou un bogue au moins. Cela ressemble à un code de gadget que vous utilisez peut-être pour votre tumblr. Le code semble fonctionner AJAX, ce qui signifie que le contenu est chargé de manière asynchrone. Il charge probablement certains éléments HTML dans votre publication de blog de manière dynamique.

Si tu veux, peux-tu nous montrer ton blog pour que nous puissions voir ce que fait vraiment le script (curiosité: D)

Mais je ne pense pas que vous ayez à vous soucier de ce code, il ne fait rien de préjudiciable.

1
Deepak Kamat