2010-03-19 4 views
1

Un signet peut-il être utilisé pour superposer une image sur une page Web? Non pas en tant que pop-up, mais en tant qu'image positionnée par CSS et avec un indice z élevé à afficher au-dessus des autres éléments. Et sans masque, c'est-à-dire Shadowbox ou un effet jQuery similaire. Juste une image d'une URL et placé dans le coin inférieur gauche de la fenêtre du navigateur.Un bookmarklet Javascript peut-il superposer une image sur une page Web?

C'est ce que j'ai jusqu'à présent, mais il peut être la mauvaise direction à aller:

javascript:(function(){document.write("<style type='text/css'>body {background-image:url(http://example.com/image.png); position: absolute; left:50px; top:300px; z-index:9999;}</style>");})() 

J'ai une fonction JS qui fonctionne comme un bookmarklet pour changer le cas du texte sur la page, et maintenant je voudrais pouvoir montrer une image quand le bookmarklet est utilisé.

Répondre

1

Définition d'une image d'arrière-plan pour le corps ne sera pas utile si vous voulez que l'image superposition la page. En outre, document.write ne peut pas être utilisé directement pour ajouter des styles CSS.

Qu'est-ce que vous voulez sans doute faire est d'ajouter un nouvel élément img à la page, et de lui donner absolute ou fixed positionnement, avec un haut z-index.

Voici un exemple qui ajoute le logo SO au coin de la fenêtre, en utilisant fixed positionnement:

javascript:(function(){document.body.innerHTML += '<img src="http://sstatic.net/so/img/logo.png" style="position: fixed; left: 10px; bottom: 10px; z-index: 1000">';})(); 
+0

Merci! Je n'ai pas réalisé que j'avais l'appel de l'image d'arrière-plan là-bas. Cela fonctionne très bien pour le logo SO et pour l'image que je veux utiliser. Mais ... parfois, dans IE avec un contenu défilant la page, l'image se retrouve au bas de la page hors de vue. Je ne sais pas comment cela serait réparé. Ne semble pas être cohérent, non plus. – markratledge

+0

Eh bien, IE6 ne supporte pas 'position: fixed', ce qui pourrait être votre problème. Il existe une solution de contournement, mais elle n'est vraiment utile que lorsque vous construisez un site à partir de rien, car cela peut casser beaucoup d'autres CSS. Rédaction de bookmarklets cross-navigateur est un problème difficile. –

+0

C'était IE8, mais ce doit être une chose spécifique au site avec CSS complexe, et cela sera utilisé spécifiquement sur un site plus simple. Donc ça n'a pas vraiment d'importance. Merci encore. – markratledge

1

Je ne pense pas que document.write serait approprié ici; pourquoi ne pas créer un nouvel élément img et l'ajouter au corps?

var img = document.createElement('img'); 
img.src = 'urlhere'; 
// TODO: set position and whatnot 
body.appendChild(img); 
Questions connexes