你好:) 我试图用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");
}
对不起我的语言
答案 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
。)