Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于更改页面上的值的Greasemonkey脚本_Javascript_Replace_Greasemonkey - Fatal编程技术网

Javascript 用于更改页面上的值的Greasemonkey脚本

Javascript 用于更改页面上的值的Greasemonkey脚本,javascript,replace,greasemonkey,Javascript,Replace,Greasemonkey,我要更改此值: <param name="fullScreen" value="0"> 为此: <param name="fullScreen" value="1"> 在一页上。我一直在用这个脚本尝试Greasemonkey: // ==UserScript== // @name Fullscreen // @namespace http://localhost // @include http://jahantv.

我要更改此值:

<param name="fullScreen" value="0">

为此:

<param name="fullScreen" value="1">

在一页上。我一直在用这个脚本尝试Greasemonkey:

// ==UserScript==
// @name           Fullscreen
// @namespace      http://localhost
// @include        http://jahantv.com*
// @include        *jahantv*
// ==/UserScript==

var i, x = document.evaluate('//*[@name="fullScreen"][@value="0"]', document,
null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for ( i=0 ; i < x.snapshotLength; i++ )
    x.snapshotItem(i).setAttribute("value", "1"); 
/==UserScript==
//@name全屏
//@名称空间http://localhost
//@包括http://jahantv.com*
//@include*jahantv*
//==/UserScript==
变量i,x=document.evaluate('/*[@name=“fullScreen”][@value=“0”]',document,
null,XPathResult.UNORDERED\节点\快照\类型,null);
对于(i=0;i
但它没有发挥作用。必须有一个简单的方法来做到这一点。我对javascript的了解非常有限,因此我希望得到详细的回复

编辑:如果有人想尝试,请转到此页面并运行脚本,请注意该站点的ridicoulas设计。

尝试
//param[@name=“fullScreen”和@value=“0”]
来定位节点,但我不确定这是否有效:我主要关心的是启动顺序。Greasemonkey脚本是否在页面加载之后和播放器创建之前运行?启动后更改值时,播放机代码是否会得到更新

因此,使用一个甚至在浏览器看到HTML之前就修改HTML的代理可能会更好。试试看


我还对无序的节点快照类型感到不安,这听起来像是“复制HTML并给我克隆”,这意味着对克隆的任何更改都不会影响浏览器窗口中的DOM。使用
ORDERED\u NODE\u ITERATOR\u TYPE
,或者完全避免使用XPath。

无需使用XPath,这将在页面加载时设置值:

// ==UserScript==
// @name           Fullscreen
// @namespace      http://localhost*
// @include        http://jahantv.com*
// @include        *jahantv*
// ==/UserScript==

var fullScrParam    = document.querySelector("[name='fullScreen']");
fullScrParam.value  = "1";

注意事项:

  • *
    localhost
    之后丢失
  • 我验证了
    属性已更改,但没有尝试播放视频,因为我不会安装所需的插件
  • 如果页面通过ajax方法更改(看起来不像),这是可以解释的,但这是一个单独的问题

  • 我不知道,你自己试试吧。将此脚本添加到URL jahantv.com并单击其中一个频道链接。然后查看源代码,您将看到该值没有更改。请尝试
    document.getElementsByName('fullScreen')[0]。value=1
    @katspaugh刚刚尝试过,但不起作用。呃。。。我在该页面上找不到任何参数…@missingno,默认情况下,您应该选择在
    DOMContentLoaded
    运行的channel.GM脚本。对于此站点,目标
    静态加载(它存在)。。。另外,
    snapshotItem
    的结果指向/是DOM元素。更改将在发生时应用于页面。。。但是你是对的,jQuery或
    querySelector
    更适合这份工作。