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

时间:2011-11-15 13:11:56

标签: javascript replace greasemonkey

我想更改此值:

<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"); 

但它没有发挥作用。必须有一个简单的方法来做到这一点。我对javascript的了解是非常有限,因此我将非常感谢您回复详情。

编辑:如果有人想尝试一下,请转到此页面http://jahantv.com/Persian/Iran/Iranian/OnLine/Live/Streaming/TVs/ariana-TV.html并运行该脚本,并且请注意该网站的嘲笑设计。

2 个答案:

答案 0 :(得分:1)

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

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

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

备注:

    {li} *localhost后失踪。
  1. 我确认<param>属性已更改但未尝试播放视频,因为我不会安装所需的插件。
  2. 如果页面通过ajax方法更改(看起来不像),可以说明这一点,但这是一个单独的问题。

答案 1 :(得分:0)

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

因此,即使在浏览器可以看到HTML之前,您也可以使用修改HTML的代理。试试Privoxy

我也对UNORDERED_NODE_SNAPSHOT_TYPE感到不安 - 这听起来像是“复制HTML并给我克隆”,这意味着对克隆的任何更改都不会对浏览器窗口中的DOM产生任何影响。使用ORDERED_NODE_ITERATOR_TYPE代替或完全避免使用XPath。