Reportage d'URL aléatoire à partir d'un tableau

/ ** * Animaux politiques * contentscript.js est chargé sur chaque (s) page (s) listée (s) dans manifeste.json * Ce plugin remplace toutes les images sur le site des sites d'actualités avec des images de * animaux en costumes, en tant que commentaire sur Les nouvelles sont devenues. Made for Web 2 * 20 novembre 2013 * /

// tableau d'images aléatoires

var arrayImg = ['http://www.whattofix.com/images/PoliticalAnimal.jpg','http://www.fubiz.net/wp-content/uploads/2013/03/Fashion-Zoo-Animals26.jpeg','http://img1.etsystatic.com/016/1/7647665/il_340x270.411173311_ojy5.jpg','http://ny-image0.etsy.com/il_fullxfull.85564656.jpg','http://afraidofmice.com/blog/wp-content/uploads/2011/08/berkleyill.jpg','http://elizabethmarshallgalleryblog.files.wordpress.com/2011/05/etsy-panda-for-blog1.jpg','http://moesewco.typepad.com/.a/6a00e5500684b488330120a5c7cf3a970c-300wi','http://ih3.redbubble.net/image.13276877.5059/flat,800x800,070,f.u1.jpg','http://www.tildeshop.com/blog/wp-content/uploads/2012/09/SeaLionFemale-21.jpg']; 

//réorienter

 var acceptedWebsites =['www.cnn.com', 'www.nytimes.com', 'www.latimes.com', 'www.washingtonpost.com', 'www.nbcnews.com', 'www.foxnews.com']; var currentUrl = document.location.href; var referrer = currentUrl.match(/:\/\/(.[^/]+)/)[1]; 

// S'assurer que le code fait ce que je veux. Tant que le lien indique un nombre supérieur à -1, alors l'extension du site fonctionne console.log (referrer); Console.log (acceptedWebsites.indexOf (referrer));

// var url = acceptedWebsites [Math.floor (Math.random () * acceptedWebsites.length)]; //document.location.href = url;

// source d'image passe par la fonction de script suivante $ ('img'). Each (function () {

// création de l'aléatoire

 var random = arrayImg[Math.floor(Math.random()*arrayImg.length)]; //Takes the current array and applies the source with the random function $(this).attr('src', random); //removing the stretch var theWidth = $(this).width(); var theHeight = $(this).height(); if (theWidth < theHeight) { $(this).height(150); } else { $(this).width(150); } }); 

// alert ("Accédez à l'un des sites Web suivants: fox.com, nbc.com, nytimes.com, latimes.com ou cnn.com");

J'ai ce tableau en javascript. Je veux l'avoir pour que l'utilisateur soit automatiquement redirigé vers l'un des liens du tableau, éventuellement au hasard. Je ne sais pas si je peux le faire en javascript. Je l'utilise pour une extension chrome, donc je ne sais pas si je peux utiliser php.

Ce sont des réponses fantastiques, sauf qu'ils redirigent constamment. Je le veux de sorte qu'ils ne soient redirigés vers l'un que sur le tableau une fois, ne sont pas systématiquement redirigés.

** Edit 2: J'ai ajouté mon code entier parce que quelque chose provoque qu'il y ait une redirection constante au lieu d'une seule fois.

** Edit 3: J'ai mis à jour mon code. Console.log prouve que mes nouvelles variables fonctionnent et font == – 1. Comment les utiliser pour la rediriger?

Obtenez une URL aléatoire du tableau et redirigez-vous?

 if ( acceptedWebsites.indexOf(document.location.href) == -1 ) { var url = acceptedWebsites[Math.floor(Math.random()*acceptedWebsites.length)]; document.location.href = url; } 

Essayez ce qui suit:

 var acceptedWebsites =['http://www.cnn.com/', 'www.nytimes.com', 'www.latimes.com', 'http://www.washingtonpost.com/', 'http://www.nbcnews.com/', 'http://www.foxnews.com/']; var number = Math.floor(Math.random() * acceptedWebsites.length); 

Nombre générera un nombre aléatoire entre 1 et le nombre d'entrées dans votre tableau accepté.

 window.location = acceptedWebsites[Math.floor(Math.random() * acceptedWebsites.length)]; 

La base de la logique serait …

 var acceptedWebsites = ['http://www.cnn.com/', 'www.nytimes.com', 'www.latimes.com', 'http://www.washingtonpost.com/', 'http://www.nbcnews.com/', 'http://www.foxnews.com/']; var randomLink = Math.floor(Math.random() * acceptedWebsites.length); window.location = acceptedWebsites[randomLink]; 
 // Get random site var randomSite = acceptedWebsites[Math.floor(Math.random() * acceptedWebsites.length)]; // redirect to selected site window.location = randomSite; 

Générer une clé "aléatoire" et utiliser window.location.href pour rediriger l'utilisateur. D'autres ont affiché la même approche, mais avec moins d'explications. Je fais de mon mieux pour vous permettre de comprendre ce qui se passe ici.

Notez que la plupart de ce code est un commentaire. Il semble plus long qu'il ne l'est réellement.

 var acceptedWebsites = ['http://www.cnn.com/', 'www.nytimes.com', 'www.latimes.com', 'http://www.washingtonpost.com/', 'http://www.nbcnews.com/', 'http://www.foxnews.com/']; // This function returns a random key for an array function randomKey(arr) { // Math.random() returns a number between 0 and 0.99999... // If you multiply this value with the length of an array, you get a // random floating point number between 0 and that length. // Use Math.floor() to round it down to the next integer return Math.floor(Math.random() * arr.length); } // Select a random website from the array var key = randomKey(acceptedWebsites); var newLocation = acceptedWebsites[key]; // Redirect the user window.location.href = newLocation; 

Essayez cette solution:

 var size = acceptedWebsites.length; var x = Math.floor((Math.random()* size)+1); 

Maintenant, utilisez la boucle pour la valeur x-1 comme

 var location = acceptedWebsites[x-1]; window.location.href = location; 

Si nous exécutons ceci en boucle, nous aurons une valeur différente de x chaque fois entre 0-size of array et ensuite nous pouvons utiliser cette valeur aléatoire pour rediriger de manière aléatoire.

Window.location ne fonctionne pas car les scripts de contenu ne sont pas privilégiés. Plus encore, window.location.href renvoie l'emplacement actuel, mais ce n'est pas une méthode, donc vous ne pouvez pas l'écraser.

Vous devrez:

Envoyer l'URL de redirection d'un script de contenu vers une page d'arrière-plan:

 var url = acceptedWebsites[Math.floor(Math.random()*acceptedWebsites.length)]; chrome.extension.sendRequest({redirect: url }); 

Dans l'URL d'un onglet de mise à jour de la page d'arrière-plan qui provoquerait la redirection:

 chrome.extension.onRequest.addListener(function(request, sender) { chrome.tabs.update(sender.tab.id, {url: request.redirect}); });