用Greasemonkey替换对象参数的值

时间:2010-12-17 18:40:17

标签: javascript object greasemonkey params

你好:) 我试图用Greasemoneky操作一些对象所以我必须写一个脚本:) 我想更改allowFullScreen参数的一个值。

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

}

对不起我的语言

3 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:0)

getElementsByName是document的成员并返回一个数组(我最好说“类似于数组的DOMNodeList”)。

所以你应该使用:

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

答案 2 :(得分:0)

改变allowFullScreen值可能还不够,因为flash对象已经用旧值初始化了。

要解决此问题,请从头开始使用新的allowFullScreen值创建新的Flash对象。

以下代码应该有效,但它需要jQuery,所以:

(1)在// @include指令之后,将此行添加到Greasemonkey元数据部分:

// @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)


(假设问题中显示的object ID为flashc。)