Benutzer-Werkzeuge

Webseiten-Werkzeuge


anwendungen_und_sonstiges:greasemonkey_-_blizzard-forumbeitrag_zu_zwischenablage

Dies ist eine alte Version des Dokuments!


Greasemonkey - Blizzard-Forumsbeitrag zu Zwischenablage

Noch unfertig!

Das ganze ist komplizierter als ich dachte - die Funktion läuft zwar und konvertiert auch den Eingabestring (den eigentlichen Post), allerdings lädt sich dieser Teil der Seite danach nicht neu.

Es gibt nun zwei Möglichkeiten, wie man mit dem ganzen umgehen kann:

  1. Mithilfe von Ajax das Neuladen des Elements im Browser triggern
  2. Das ganze nur als Prompt-Box annehmen, mit allen dazugehörigen Nachteilen :(

// ==UserScript==
// @name        get blizzard-forum entry to clipboard
// @namespace   rldml
// @include     /^https?://eu\.battle\.net/d3/(de|en)/forum/.*$/
// @version     1
// @grant       none
// ==/UserScript==
 
var varDebug = true;
var varSinglePost;
var ATag
var varStringToCopy = "Test";
var varPostList = document.getElementById('post-list');
 
if (varDebug == true) console.log ('GetElementByID: varPostList = ' + varPostList);
 
for (i=0; i<varPostList.children.length; i++)
{
	varSinglePost = varPostList.children[i];
	if (varDebug == true) console.log('Select Post No. ' + i + ' with Id ' + varSinglePost.getAttribute('data-post-id') + ': ' + varSinglePost);
	varStringToCopy = varSinglePost.children[1].children[1].children[0].innerHTML;
	varStringToCopy = varStringToCopy.replace(/'/g, "\\'");
	varATag = document.createElement('a');
	varATag.setAttribute('href','javascript:copyToClipboard(\''+varStringToCopy+'\');');
	varATag.setAttribute('id','GM' + varSinglePost.getAttribute('data-post-id'));
	varATag.innerHTML = "COPY";
	varSinglePost.children[1].children[2].children[0].appendChild(varATag);
}
 
varScript = document.createElement('script');
varScript.setAttribute('type','text/javascript');
varScript.innerHTML = "function copyToClipboard(text) {Clipboard = window.open(); Clipboard.document.write(convertText2(text));}";
varPostList.appendChild(varScript);
varScript = document.createElement('script');
varScript.setAttribute('type','text/javascript');
varScript.innerHTML = "function quotestr(quoteLevel) {\n\tqstr = \"\";\tfor (j = 1; j <= quoteLevel; j++) {\n\t\tqstr += \">\";\n\t}\n\treturn (qstr);\n}";
varPostList.appendChild(varScript);
varScript = document.createElement('script');
varScript.setAttribute('type','text/javascript');
varScript.innerHTML = "function convertText2(varText)\r\n{\r\n    var Text = [];\r\n    var RestText = varText;\r\n    do {\r\n        FoundSomething = false;\r\n        positionTag = -1;\r\n        positionTag = RestText.indexOf(\"<\");\r\n        if (positionTag != -1) {\r\n            FoundSomething = true;\r\n            if (positionTag == 0)\r\n            {\r\n                positionTagEnd = -1;\r\n                positionTagEnd = RestText.indexOf(\">\") + 1;\r\n                Text.push(RestText.substring(0, positionTagEnd));\r\n                RestText = RestText.substring(positionTagEnd);\r\n            } else\r\n            {\r\n                positionTagEnd = -1;\r\n                positionTagEnd = RestText.indexOf(\"<\");\r\n                Text.push(RestText.substring(0, positionTagEnd));\r\n                RestText = RestText.substring(positionTagEnd);\r\n            }\r\n        } else {\r\n            Text.push(RestText);\r\n            RestText = \"\";\r\n        }\r\n    } while (FoundSomething == true && RestText.length > 0);\r\n    var actQBLevel = 0;\r\n    var ignoreBecauseSpan = false;\r\n    var varText = \"\";\r\n    for (i = 0; i < Text.length ; i++)\r\n    {\r\n        if (Text[i].indexOf(\"<blockquote\") != -1)\r\n        {\r\n            actQBLevel++;\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<\/blockquote\") != -1)\r\n        {\r\n            actQBLevel--;\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<div\") != -1)\r\n        {\r\n            varText += \"<br>\" + quotestr(actQBLevel);\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<\/div\") != -1)\r\n        {\r\n            varText += \"<br>\" + quotestr(actQBLevel);\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<b>\") != -1 || Text[i].indexOf(\"<\/b>\") != -1)\r\n        {\r\n            varText += \"**\";\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<span\") != -1)\r\n        {\r\n            varText += \"\/\/\";\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<\/span\") != -1)\r\n        {\r\n            varText += \"\/\/&nbsp;\";\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<a\") != -1)\r\n        {\r\n            varText += \"[[\";\r\n            hrefPos = Text[i].indexOf(\"href=\\\"\");\r\n            hrefPostStart = hrefPos + 6;\r\n            hrefPostEnd = (Text[i].indexOf(\"\\\"\", hrefPostStart));\r\n            urlRef = Text[i].substring(hrefPostStart, hrefPostEnd);\r\n            baseURL = location.href;\r\n            baseURLTopic = (baseURL.lastIndexOf(\"\/\")) + 1;\r\n            baseURL = baseURL.substring(0, baseURLTopic);\r\n            varText += baseURL + urlRef + \"|\";\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<\/a\") != -1)\r\n        {\r\n            varText += \"]]\";\r\n            continue;\r\n        }\r\n        if (Text[i].indexOf(\"<br\") != -1)\r\n        {\r\n            varText += \"<br>\" + quotestr(actQBLevel);\r\n            continue;\r\n        }\r\n        if (varText == \"\")\r\n        {\r\n            varText += quotestr(actQBLevel) + Text[i];\r\n        } else\r\n        {\r\n            varText += Text[i];\r\n        }\r\n    }\r\n    return (varText);\r\n}";
varPostList.appendChild(varScript);

Vielleicht hilft dieser Code-Schnipsel weiter:

function FensterOeffnen (Adresse) 
{ 
  MeinFenster = window.open(Adresse, "Zweitfenster", "width=300,height=400,left=100,top=200");
  MeinFenster.document.write("<p>ein neues Fenster!<br>(Besser wäre aber eine dialog-Box!)</p>");
  MeinFenster.focus();
}

Quelle: Link

anwendungen_und_sonstiges/greasemonkey_-_blizzard-forumbeitrag_zu_zwischenablage.1447949642.txt.gz · Zuletzt geändert: 2016/04/02 00:37 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki