b4ca46a165
On Firefox, clicking a bookmarklet will cause the page to display the last return value of the bookmarklet, deleting the rest of the page contents. The solution is to add undefined; at the end.
114 lines
2.6 KiB
JavaScript
114 lines
2.6 KiB
JavaScript
javascript:
|
|
CSS = ""
|
|
+ "* {margin: 0; padding: 0}"
|
|
+ "html {height: 95%}"
|
|
+ "body {height: 100%; background-color: #000}"
|
|
+ "div { display:inline-block; }"
|
|
+ "video {"
|
|
+ " min-width: 100%;"
|
|
+ " min-height: 100%;"
|
|
+ " max-width: 100%;"
|
|
+ " max-height: 100%;"
|
|
+ " overflow: hidden;"
|
|
+ "}"
|
|
;
|
|
|
|
var VIDEO_TYPES = ["\\.mp4", "\\.m4v", "\\.webm", "\\.ogv"].join("|");
|
|
|
|
function apply_css()
|
|
{
|
|
console.log("applying CSS");
|
|
var css = document.createElement("style");
|
|
css.innerHTML = CSS;
|
|
document.head.appendChild(css);
|
|
}
|
|
|
|
function get_media_links()
|
|
{
|
|
var anchors = document.getElementsByTagName("a");
|
|
var media_links = [];
|
|
for (var index = 0; index < anchors.length; index += 1)
|
|
{
|
|
var anchor = anchors[index];
|
|
if (anchor.href.match(VIDEO_TYPES))
|
|
{
|
|
media_links.push(anchor.href);
|
|
}
|
|
}
|
|
return media_links;
|
|
}
|
|
|
|
function clear_page()
|
|
{
|
|
/* Remove EVERYTHING */
|
|
console.log("clearing page");
|
|
document.removeChild(document.documentElement);
|
|
|
|
var html = document.createElement("html");
|
|
document.appendChild(html);
|
|
|
|
var head = document.createElement("head");
|
|
html.appendChild(head);
|
|
|
|
var body = document.createElement("body");
|
|
html.appendChild(body);
|
|
|
|
document.documentElement = html;
|
|
return true;
|
|
}
|
|
|
|
function create_video_players(width, height)
|
|
{
|
|
var css_width = (100 / width).toString() + "%";
|
|
var css_height = (100 / height).toString() + "%";
|
|
console.log(css_width);
|
|
|
|
var players = [];
|
|
for (var index = 0; index < width * height; index += 1)
|
|
{
|
|
var player_holder = document.createElement("div");
|
|
var player = document.createElement("video");
|
|
player_holder.style.width = css_width;
|
|
player_holder.style.height = css_height;
|
|
player.holder = player_holder;
|
|
players.push(player);
|
|
player_holder.appendChild(player);
|
|
document.body.appendChild(player_holder);
|
|
}
|
|
return players;
|
|
}
|
|
|
|
function swap_source(player, source_list)
|
|
{
|
|
var index = Math.floor(Math.random() * source_list.length);
|
|
var href = source_list[index];
|
|
player.pause();
|
|
player.src = href;
|
|
player.load();
|
|
player.play();
|
|
}
|
|
|
|
function main()
|
|
{
|
|
var WIDTH = 2;
|
|
var HEIGHT = 2;
|
|
var MEDIAS = get_media_links();
|
|
|
|
clear_page();
|
|
apply_css();
|
|
|
|
var PLAYERS = create_video_players(WIDTH, HEIGHT);
|
|
function ended_callback()
|
|
{
|
|
swap_source(this, MEDIAS);
|
|
}
|
|
for (var index = 0; index < PLAYERS.length; index += 1)
|
|
{
|
|
var player = PLAYERS[index];
|
|
player.addEventListener("ended", ended_callback);
|
|
swap_source(player, MEDIAS);
|
|
}
|
|
}
|
|
|
|
main();
|
|
undefined;
|