在某网站观看视频时,每隔一段时间会弹出一个问题,回答后才能继续观看,希望可以使用GreaseMonkey自动回答弹出的问题。

弹窗使用jQuery1.4.4的dialog弹出,弹出后可以使用下面的代码选择正确的答案。

document.querySelector('[qs=True]').click()

document.querySelector('#but_Question').click()

尝试使用

// ==UserScript==

// @name test_auto_close_dialog

// @namespace

// @include http://zjxy.ghlearning.com/Study/Learning/MediaLi?sscId=8f658a796db74a3ea9dde99e5a571534&medId=e4975f7a1a4e42768902bf35af23868c

// @version 1

// @grant none

// ==/UserScript==

$('.ui_main').bind('dialogopen',function(event){

document.querySelector('[qs=True]').click();

document.querySelector('#but_Question').click();

})

绑定弹出事件,但是没有取得预期的效果。请问是否有办法写一个脚本,以自动回答问题?

其中关于播放器的代码如下:

var LiPlayerPlayState = {};

LiPlayerPlayState.Stopped = 1;

LiPlayerPlayState.Paused = 2;

LiPlayerPlayState.Playing = 3;

LiPlayerPlayState.Ended = 8;

LiPlayerPlayState.Ready = 10;

LiPlayerPlayState.Reconnecting = 11;

var playerVideo = null;

var LiPlayer = function (containerId, _config) {

//针对800里流媒体播放学习

this.containerId = containerId;

this.config = {

onLoad: function () { },

onStoped: function () { },

onPaused: function () { },

onPlay: function () { },

onBuffering: function () { },

onBuffered: function () { },

onPositionChange: function (o, n) { },

onEnded: function () { },

onLoadError: function (message) { },

onLoadOverPlay: function () { },

width: "100%",

height: "100%",

resPath: "",

playerURL: "",

playSite: "",

playQuery: ""

};

$.extend(this.config, _config);

if (this.config.width != "100%") {

this.config.width += "px";

}

if (this.config.height != "100%") {

this.config.height += "px";

}

p2psr_embed("auto", "vod", this.config.playSite, this.config.playQuery, "p2ps_video", this.config.width, this.config.height, "10.1.0",

this.config.resPath + '/Files/expressInstall.swf', { auto_play: 1, no_light: 1, no_side_bar: 1, no_hide_skin: 1 }, { allowFullScreen: true, allowScriptAccess: "always", wmode: "transparent" }, {}, swfPlayerInit);

}

LiPlayer.prototype = {

load: function (url) {

},

play: function () {

playerVideo.resume();

},

pause: function () {

playerVideo.pause();

},

isPlaying: function () {

//getState(): 获取当前播放器的状态,"not_ready", "not_open", "playing", "pause", "end"

var state = playerVideo.getState();

if (state == "playing") {

return true;

}

else {

return false;

}

},

currentPosition: function () {

//获取当前播放时间, 单位秒

var vTime = playerVideo.getTime();

return Math.floor(vTime);

},

setSeek: function (position) {

//定位视频, t 为小数,单位为秒。

playerVideo.seek(position);

},

duration: function () {

//获取当前视频的长度,单位秒

playerVideo.getDuration();

},

getCurrentTime: function () {

return playerVideo.getTime();

},

getState: function () {

//getState(): 获取当前播放器的状态,"not_ready", "not_open", "playing", "pause", "end"

try {

var state = playerVideo.getState();

switch (state) {

case "not_ready":

return LiPlayerPlayState.Reconnecting;

break;

case "not_open":

return LiPlayerPlayState.Reconnecting;

break;

case "playing":

return LiPlayerPlayState.Playing;

break;

case "pause":

return LiPlayerPlayState.Paused;

break;

case "end":

return LiPlayerPlayState.Ended;

break;

}

} catch (e) {

return -1;

}

},

close: function () {

playerVideo.close();

}

};

var timeState = null;

var timeStateIsPaused = false;

var timeStateIsRePlaying = false;

//启动定时器,监控播放状态

function startTimerState() {

if (timeState == null) {

timeState = setInterval(timerStateCallback, 500);

}

}

//转换播放状态码

function getStateCode() {

try {

var state = this.playerVideo.getState();

switch (state) {

case "not_ready":

return LiPlayerPlayState.Reconnecting;

break;

case "not_open":

return LiPlayerPlayState.Reconnecting;

break;

case "playing":

return LiPlayerPlayState.Playing;

break;

case "pause":

return LiPlayerPlayState.Paused;

break;

case "end":

return LiPlayerPlayState.Ended;

break;

}

} catch (e) {

return -1;

}

}

function timerStateCallback() {

var state = getStateCode();

switch (state) {

case 2:

//播放状态暂停时,停止计时

if (!timeStateIsPaused) {

this.player.config.onPaused();

timeStateIsPaused = true;

//设置允许开始继续播放

timeStateIsRePlaying = true;

}

break;

case 3:

//在暂停后重新允许重新开始播放时,回调计时提交

if (timeStateIsRePlaying) {

timeStateIsRePlaying = false;

this.player.config.onRePlay();

}

//播放状态时,启动计时

this.player.config.onPlay();

timeStateIsPaused = false;

break;

}

}

/**

* 播放器初始化回调函数,只调用一次

* @param obj{object} 回调对象{Object {success: boolean, id: string, ref: object#p2ps_video}

* @param swfPlayer{object} swfPlayer对象

*/

function swfPlayerInit(playerObj) {

//this.playerVideo = playerObj.ref;

this.playerVideo = document.getElementById(playerObj.id);

//设置监听事件

this.playerVideo.setEventListener("playerEventListener");

this.player.config.onLoadOverPlay();

startTimerState();

}

/**

* 监听播放状态

* @param event {object} 事件对象

*/

function playerEventListener(event) {

//判断触发事件的状态,1、play(播放) 2、pause(暂停) 3、seek(跳转) 4、end(结束) 5、close(关闭流)

var playState;

if (event.type === "eventPlayResume" || event.type === "eventPlayStart") {

playState = "play";

}

else if (event.type === "eventPlaySeek") {

//如果是跳跃播放

playState = "seek";

}

else if (event.type === "eventPlayPause") {

//如果是暂停状态

playState = "pause";

}

else if (event.type === "eventStreamEnd") {

//如果是播放完成状态

playState = "end";

}

else if (event.type === "eventPlayClose") {

//如果是关闭流

playState = "close";

}

if (window.console)

window.console.log("event.type:" + event.type);

//执行播放绑定事件

toggleEvent(playState, window.player.config);

}

function toggleEvent(state, config) {

switch (state) {

case "seek":

config.onPositionChange();

break;

case "end":

config.onEnded();

break;

}

}

java窗口如何定时关闭_如何使用GreaseMonkey关闭定时弹出的窗口?相关推荐

  1. wincc怎么做一个弹出画面_在wincc画面上如何弹出小窗口

    可以放置画面窗口,用变量来触发何时显示画面窗口 回答者: zishunwang - 资深学长&nbsp&nbsp第3级 2008-07-10 10:29:25 弹出子窗口可用变量触发, ...

  2. php mysql js弹出登陆小窗口_基于Jquery+div+css实现弹出登录窗口(代码超简单)_jquery...

    具体代码详情如下所示: 基本思路先隐藏(dispaly:none)再显示,半透明蒙版层通过 z-index:9998; z-index:9999; 值越大越在前面 index.html jquery点 ...

  3. html弹出窗口是浮动,JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解

    本文实例讲述了JS实现弹出浮动窗口.分享给大家供大家参考.具体如下: 这里介绍的JS弹出浮动窗口,支持鼠标拖动和关闭,点击链接文字后弹出层窗口,也称作是弹出式对话框吧. 关于一些参数说明: bodyc ...

  4. html点击按钮弹出悬浮窗_JS设置弹出小窗口。

    经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警告.欢迎光顾之类的话或者作者想要特别提示的信息.其实制作这 ...

  5. sharepoint 2010 默认弹出模式窗口最大化default showModalDialog maximize

    记录一下如何在sharepoint 2010 弹出模式窗口最大化的方法. 前面提到关于sharepoint 2010 弹出模式窗口showModalDialog并返回值returnResult方法,知 ...

  6. java弹窗点击事件_[Java教程]jQuery的click事件在当前页弹出层窗口(不打开新页面)...

    [Java教程]jQuery的click事件在当前页弹出层窗口(不打开新页面) 0 2015-10-24 15:00:04 当给链接添加一个click事件,我们可能不希望Web浏览器按照其常规模式退出 ...

  7. java bat 运行 jar文件_运行bat文件启动java的jar且不弹出DOS窗口,后台运行java的jar包...

    本文主要是将java的jar包启动的cmd命令添加到bat文件来执行,且不弹出DOS窗口,也就是后台运行java的jar包. 这里以win10为例 1.新建 一个txt文件,在文件添加以下内容.其中E ...

  8. pyqt5子窗口跳出主窗口_弹出式窗口与 可用性,转换和跳出率

    pyqt5子窗口跳出主窗口 Written by Cassandra Naji 由卡珊德拉·纳吉 ( Cassandra Naji)撰写 They go by many names - modal w ...

  9. Windows下Java调用BAT批处理不弹出cmd窗口

    常规Windows下Java调用BAT方式肯定会弹出cmd窗口 Runtime.getRuntime().exec("cmd.exe /C start D:\\test.bat") ...

最新文章

  1. mounty不可重新挂载因为先前没有完全卸载_【译】React Hooks测试完全指南
  2. 下边框_山寨iPhone12Pro开箱:浴霸四摄更小,下边框有点宽
  3. pxe linux自动安装系统,通过 PXE 自动安装操作系统(1):部署 PXE Server
  4. 模仿网易(163)首页Ajax功能中的鼠标延时触发
  5. QT中动态库和静态库使用
  6. Linux 定时执行命令 crontab
  7. oracle ebs 安装教程,Oracle_EBS_系统安装以及维护.doc
  8. mysql奢姿密码_mysql trim函数和oracle有区别吗
  9. ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)
  10. Module-Zero之组织单元(OU)管理【新增】
  11. python 构造函数传参_C++和python混合编程之在python类构造函数中传参方法
  12. vue和哪个php框架搭配,vue配什么ui框架比较好
  13. 算法十大排序(含动图)
  14. 使用PL/SQL程序输出1~13中所有不是3的倍数的整数数值
  15. 虚拟机服务器ip端口映射,VMware虚拟机配置端口转发(端口映射),实现远程访问【转】...
  16. OpenWRT安装Home Assistant
  17. 编程中常见的各种符号英文名字
  18. c# forbidden.html,C#Web API方法返回403 Forbidden
  19. 【程序设计训练】棋盘
  20. js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析

热门文章

  1. 【超级视客营】基于超算平台的MMYOLO实践过程记录(自定义数据集实现YOLO v5)
  2. 数仓建设(离线和实时)
  3. C#创建Windows窗体应用程序实例1【姓名输入】
  4. 关于RSA加密后,后台解密中文乱码的解决方法
  5. c语言中分不分大小写,C语言高级语言程序设计(一)-第四章 程序设计方法-模块化与算法设计.ppt...
  6. T字形路口小车如何要c语言编程,一点通驾校模拟考试
  7. vue_按需引入elment、echarts和路由懒加载,减少打包体积
  8. 安卓11上的存储权限问题
  9. 绩效考核软件,强势助力二、三级公立医院绩效大考
  10. mysql 字符串截取