2010-12-17 90 views
1

你好:) 我想用Greasemoneky操作一些對象,所以我必須寫一個腳本:) 我想改變allowFullScreen參數的一個值。用Greasemonkey替換對象參數的值

<object width="760" height="660" type="application/x-shockwave-flash" id="flashc" name="flashc" data="http://example.com/swf/39.swf"> 
    <param name="menu" value="false"> 
    <param name="allowFullScreen" value="false"> // I want to change this to **"true"** 
    <param name="scale" value="noscale"> 
    <param name="wmode" value="transparent"> 
    <param name="allowScriptAccess" value="always"> 
</object> 

我已經寫的東西,但它不工作:

function allowFS() 
{ 
    var obj = getElementsByName("allowFullScreen") 
    obj.setAttribute("value", "true"); 

} 

對不起,我的語言

回答

1

不知道任何getElementsByName功能。也許這是一個GreaseMonkey功能。但在JS我會做這樣的事情:

var params = document.getElementsByTagName('param'); 

for (var i = 0; i < params.length; i++) 
{ 
    if (params[i].name == 'allowFullScreen') 
    { 
     params[i].setAttribute('value', 'true'); 
    } 
} 

編輯:對不起我的無知,getElementsByName存在,返回和陣列等作爲getElementsByTagName。因此,代碼將是:

var params = document.getElementsByName('allowFullScreen'); 

for (var i = 0; i < params.length; i++) 
{ 
    params[i].setAttribute('value', 'true'); 
} 
+0

'getElementsByName'存在且所有主要的瀏覽器支持(假定該object ID是flashc如圖所示的問題。) ,所以w3schools說:http://www.w3schools.com/jsref/met_doc_getelementsbyname.asp – Zecc 2010-12-17 19:04:41

+0

哇!優秀。我們每天都在學習東西。謝謝。 – joksnet 2010-12-17 21:32:22

+0

我不知道爲什麼它不起作用 - 所有的時間我都有「虛假」的價值:|但是,無論如何感謝您試圖幫助:) – Lyczos 2010-12-17 22:03:44

0

getElementsByName是文件的成員,並返回一個數組(我應該更好地說:「一個數組類的DOMNodeList」)。

所以,你應該使用:

var obj = document.getElementsByName("allowFullScreen")[0]; 
0

這可能不足以改變allowFullScreen值,因爲閃光燈對象將已經與舊值初始化。

爲了解決這個問題,請從頭開始使用新的allowFullScreen值創建一個新的Flash對象。

下面的代碼應該工作,但它需要jQuery的,所以:

(1)該行添加到Greasemonkey的元數據部分,只是// @include指令(S)後:

// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js 

( 2)使用GM的「管理用戶腳本」面板,卸載並重新安裝Greasemonkey腳本以確保jQuery文件被複制到您的PC。

(3)然後試試這個代碼:

$('#flashc param[name="allowFullScreen"]').val ("true"); 
var jNewFlash = $('#flashc').clone (true); 
$('#flashc').replaceWith (jNewFlash) 


+0

也許我不能在GM上運行腳本:([我不工作太; /)但是,無論如何;) – Lyczos 2010-12-18 15:23:07

+0

@Lyczos:任何人都可以運行GM腳本。你需要精確地指定它如何工作。最好將鏈接發佈到您嘗試修改的頁面上。 – 2010-12-19 02:26:38