簡體   English   中英

使用Greasemonkey腳本更改頁面上的值

[英]Greasemonkey script to change a value on a page

我想更改此值:

<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並運行腳本,並請注意該站點的ridicoulas設計。

無需使用XPath,這將在頁面加載時設置值:

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

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

筆記:

  1. *localhost之后丟失。
  2. 我驗證了<param>屬性已更改,但未嘗試播放視頻,因為我不會安裝所需的插件。
  3. 如果頁面是通過ajax方法更改的(看起來不像),則可以考慮,但這是一個單獨的問題。

嘗試//param[@name="fullScreen" and @value="0"]來找到該節點,但是我不確定這是否可行:我主要關心的是啟動順序。 Greasemonkey腳本是否在頁面加載之后以及創建播放器之前立即運行? 在啟動后更改值時,播放器代碼會更新嗎?

因此,使用代理修改HTML可能會更好,甚至在瀏覽器看到HTML之前也可以。 嘗試Privoxy

對於UNORDERED_NODE_SNAPSHOT_TYPE ,我也感到不安-聽起來像“復制HTML並給我克隆”,這意味着對克隆的任何更改都不會影響瀏覽器窗口中的DOM。 請改用ORDERED_NODE_ITERATOR_TYPE或完全避免使用XPath。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM