2016-10-04 1 views
2

J'essaie de démarrer une vidéo videojs intégrée en utilisant Greasemonkey. La vidéo est en cours d'exécution dans une iframe et j'ai réussi à lancer la vidéo en chrome avec Tampermonkey mais dans Firefox la vidéo commence à se charger et s'arrête une seconde plus tard. Je suppose que mon script suivant commence trop tôt après avoir rechargé la page, j'ai donc essayé de retarder le démarrage avec setTimeout mais le code ne démarre pas. Donc ma question est-il possible d'utiliser setTimeout dans un iframe?Est-il possible d'exécuter setTimeout à l'intérieur d'un iframe?

// ==UserScript== 
// @name  Autoplay 
// @namespace openload 
// @include  https://openload.co/embed/* 
// @version  1.0.0 
// @run-at  document-idle 
// ==/UserScript== 

window.setTimeout(play, 5000); 
function play() 
{ 
console.log("Start"); 
document.querySelector('#videooverlay').click(); 
videojs.getPlayers()['olvideo'].player_.play(); 
console.log("End"); 
} 

J'utilise @include https://openload.co/embed/ * pour exécuter le script dans l'iframe sinon je ne peux pas utiliser la commande .play(). Si j'ouvre l'iframeurl manuellement et que j'utilise les commandes sur la console FF, cela fonctionne parfaitement.

+1

Il est probable que dans Firefox, la vidéo soit lue automatiquement après que #videooverlay a été cliqué. Essayez de commenter la ligne play(). – wOxxOm

+0

Je ne vois pas quel est le problème ici. Vous présentez du code qui utilise le délai d'expiration, mais le titre de votre question vous demande si vous pouvez utiliser le délai d'attente ... Le délai d'expiration fonctionne-t-il pour vous? Les journaux 'console.log' apparaissent-ils dans la console? –

+0

Pourquoi n'utilisez-vous pas '@include iframeurl' pour exécuter le code dans la bonne fenêtre? – w35l3y

Répondre

0

Peut-être essayer quelque chose comme ça

window.addEventListener ("load", playerstart, false); 

function playerstart() { 

} 
+2

Expliquer pourquoi ce code fonctionne et donner plus de détails serait probablement utile. –

0

Je pense que vous voudriez ajouter un écouteur d'événement "onload" au chargement de page dans l'iframe, et dans la fonction de chargement ajouter le setTimeout.

Je pense que le plus gros problème à comprendre pourquoi il ne joue pas dans Firefox. Est-ce un problème d'encodage? L'avez-vous dans une source que FF peut jouer? Miro Video Converter peut vous aider.

+0

La source est hébergé par openload.co et le joueur est intégré dans un site Web où j'essaie de démarrer la vidéo automatique. après avoir chargé l'Url. Si je démarre manuellement la vidéo, cela fonctionne normalement, donc je ne pense pas que ce soit un problème d'encodage. – Hopi

0

-vous tryed pour lancer le script du parent et à l'intérieur de l'iframe? Ensuite, utilisez setTimeout.

+0

S'il vous plaît fournir vos codes –

+0

je pensais que je ne peux pas interagir avec le script à l'intérieur de l'iframe? – Hopi