// ==UserScript==
// @name Kindle-Text
// @description Adds live button, show a new window for copy Kindle text. CHANGE @match regarding your reader URL
// @author obook
// @version 2
// @licence MIT License (MIT)
// @namespace Violentmonkey Scripts
// @match https://lire.amazon.fr/*
// @match https://read.amazon.com/*
// @icon https://m.media-amazon.com/images/G/01/kindle/dp/p2e_kcp_logo._CB494437007_.png
// @grant GM_addStyle
// @downloadURL https://update.greasyfork.icu/scripts/387390/Kindle-Text.user.js
// @updateURL https://update.greasyfork.icu/scripts/387390/Kindle-Text.meta.js
// ==/UserScript==
/*
*
* Sources :
*
* https://stackoverflow.com/questions/11638595/how-do-i-access-an-iframes-javascript-from-a-userscript
* https://stackoverflow.com/questions/7675909/how-to-insert-javascript-code-in-the-body-instead-of-head-in-greasemonkey
* https://stackoverflow.com/questions/6480082/add-a-javascript-button-using-greasemonkey-or-tampermonkey
*
* */
//--- Style our newly added elements using CSS.
GM_addStyle ( `
#myContainer {
position: absolute;
bottom: 0;
left: 0;
font-size: 20px;
background: white;
border: 0px outset black;
margin: 5px;
opacity: 0.4;
z-index: 1100;
padding: 5px 20px;
}
#myButton {
cursor: pointer;
}
#myContainer p {
color: red;
background: white;
}
#RawButton {
//position: absolute;
// position:fixed;
top: 0;
background: white;
color: red;
opacity: 0.4;
}
` );
// Inject New Window Opener Script
var newScript = document.createElement( 'script'); //create a script tag
newScript.type = 'text/javascript'; // add type attribute
newScript.innerHTML = 'function NewTextWindow(){new_window=window.open();new_window.document.body.innerHTML = $(\'iframe\').contents().find(\'iframe\').contents().find(\'body\').get(1).innerHTML; }'; // add content i.e. function definition and a call
document.body.appendChild(newScript); // Insert it as the last child of body
function AccessToFramedJS ($) {
$("body").prepend ('');
$("#RawButton").click ( function () {
NewTextWindow (); // toucher une fonction d'une frame
} );
/* tests
var zNode = document.createElement ('div');
zNode.innerHTML = '';
zNode.setAttribute ('id', 'myContainer');
//$("body").appendChild(zNode);
document.body.appendChild (zNode);
$("#myButton").click ( function () {
NewTextWindow (); // toucher une fonction d'une frame
} );
*/
}
function withPages_jQuery (NAMED_FunctionToRun) {
//--- Use named functions for clarity and debugging...
var funcText = NAMED_FunctionToRun.toString ();
var funcName = funcText.replace (/^function\s+(\w+)\s*\((.|\n|\r)+$/, "$1");
var script = document.createElement ("script");
script.textContent = funcText + "\n\n";
script.textContent += 'jQuery(document).ready(function() {'+funcName+'(jQuery);});';
document.body.appendChild (script);
};
if (window.top === window.self) {
//--- To get at iFramed JS, we must inject our JS.
withPages_jQuery (AccessToFramedJS);
}