NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Previsualizer
// @namespace JVScript
// @grant none
// @include http://www.jeuxvideo.com/forums/0*
// @version 0.1.3
// @copyright MIT
// ==/UserScript==
(function() {
"use strict";
function ajax()
{
var xhr = new XMLHttpRequest()
xhr.open('get', this.url, true)
var _this = this
xhr.send()
xhr.onreadystatechange = function() {
if(xhr.readyState == 4)
_this.run(xhr.responseText)
}
}
function Icon(node)
{
this.a = document.createElement('a')
this.div = document.createElement('div')
this.img = document.createElement('img')
this.url = node.getElementsByTagName('a')[0].href
this.arw = document.createElement('div')
this.text = ''
this.initialize()
this.arw.innerHTML = '<img src="http://s3.noelshack.com/uploads/images/2575252458999_arrow.png" alt="" />'
this.arw.setAttribute('class', 'prarw')
node.getElementsByTagName('a')[0].setAttribute('style', 'display: inline')
node.setAttribute('style', 'text-align: left');
this.a.appendChild(this.arw)
node.appendChild(this.a)
}
Icon.prototype = {
initialize: function()
{
this.a.setAttribute('class', 'prnode')
this.div.setAttribute('class', 'msg msg2 prediv')
this.img.src = 'http://s3.noelshack.com/uploads/images/12431829412728_topicpreview.png'
this.img.alt = 'P'
this.img.setAttribute('width', '80%')
var _this = this
this.img.addEventListener('mouseover', function()
{
_this.div.innerHTML = '<img style="margin: auto; display: block" src="http://s3.noelshack.com/uploads/images/20188032684831_loading.gif" alt="Loading" width="35%" />'
ajax.call(_this)
},
false)
this.a.appendChild(this.img)
this.a.appendChild(this.div)
},
run: function(data)
{
var prems = data.split(/<div id="message_[0-9]+" class="msg msg(1|2)">/)
this.text = prems[2]
if(this.text.split('<li').length < 4)
this.text = prems[4]
this.text = this.text.split('</div>')[0]
this.div.innerHTML = this.text
var post = this.div.getElementsByClassName('post')[0]
}
}
var script =
{
run: function() {
var nodes = document.evaluate('//a[@class="ltopic"]/..', document, null, 7, null)
for ( var i = 0 ; i < nodes.snapshotLength; i++ )
new Icon(nodes.snapshotItem(i))
this.addStyle('.prediv{position: absolute; z-index: 1000; width: 500px; max-height: 400px; overflow-y: scroll; display: none; margin-left: 18px; margin-top: -17px}'
+ '.prarw {position: absolute; display: none; z-index: 1001; margin-left: 13px; margin-top: -10px}'
+ '.prediv .post, .prediv .pseudo{text-align: left; color: black; font-weight: normal; font-family: Arial} '
+ '.prediv a {display: inline !important} '
+ '.prediv .date {color: black}'
+ '.prnode {display: none !important; float: right} '
+ '.tr1:hover .prnode, .tr2:hover .prnode {display: inline !important} '
+ '.prnode:hover .prediv, .prnode:hover .prarw{display: block}'
)
},
addStyle: function(css) {
var head = document.getElementsByTagName('head')[0]
var node = document.createElement("style")
node.setAttribute('type', 'text/css')
node.appendChild(document.createTextNode(css))
head.appendChild(node)
}
}
script.run()
})()