Заменить значение параметра объекта на Greasemonkey - PullRequest
1 голос
/ 17 декабря 2010

Привет :) Я пытаюсь манипулировать каким-то объектом с 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 ]

1 голос
/ 17 декабря 2010

Не известно ни о какой функции 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');
    }
}

EDIT : извините за мое невежество, getElementsByName существует и возвращается и похож на массив как getElementsByTagNameТак что код будет:

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

for ( var i = 0; i < params.length; i++ )
{
    params[i].setAttribute('value', 'true');
}
0 голосов
/ 18 декабря 2010

Вероятно, недостаточно изменить значение allowFullScreen, поскольку объект флэш-памяти уже будет инициализирован со старым значением.

Чтобы обойти это, создайте новый flash-объект, используя новое значение allowFullScreen с самого начала.

Следующий код должен работать, но для этого требуется jQuery, поэтому:

(1) Добавьте эту строку в раздел метаданных Greasemonkey сразу после директивы // @include:

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

(2) Используя панель GM «Управление пользовательскими сценариями», удалите, а затем переустановите сценарий Greasemonkey, чтобы убедиться, что файл jQuery скопирован на ваш компьютер.

(3) Затем попробуйте этот код:

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


(Предполагается, что идентификатор object равен flashc, как показано в вопросе.)

0 голосов
/ 17 декабря 2010

getElementsByName является членом документа и возвращает массив (лучше сказать "массивоподобный DOMNodeList").

Так что вы должны использовать:

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