HI
Я пытаюсь вызвать метод, определенный во флэш-объекте из JavaScript
(firefox-3.0 / Linux) и получение исключения: "NPMethod вызван
не-
NPObject JSPbject ".
Если я использую eval для window.document.flash_object.func (), он выдает
«NPMethod вызвал JSObject, не являющийся объектом NPObject».
Где как, если я определю функцию javascript на стороне страницы, как указано
ниже: * * 1007
function myFunc () {
return flash_object.func ();
}
и позже сделайте eval из window.document.myFunc (), он отлично работает.
Я выполняю два теста через тестовую среду под названием Selenium.
[eval (window.document.flash_object.func ()) и
Eval (window.document.myFunc ())].
Проблемы, похоже, связаны с вызовом метода flash-объекта без передачи ссылки "this". Вот пример html / js-кода для воспроизведения этой проблемы: «NPMethod вызван для JSObject, не являющегося NPObject».
<script>
function changeColor() {
mymovie.changeColor();
}
function getColorNP() {
var func = mymovie.getColor;
func();
}
</script>
<button type="button" onclick="getColorNP();">getColorNP</button>
<button type="button" onclick="getColor();">getColor</button>
getColorNP throws the exception
Error: NPMethod called on non-NPObject wrapped JSObject!
Source File: http://my.host/Colors/colors.html
getColorNP throws the exception
Error: NPMethod called on non-NPObject wrapped JSObject!
Source File: http://my.host/Colors/colors.html
Теперь вопрос к гуру javascript:
При наличии флэш-объекта и имени метода, как мне вызвать метод для этого объекта. Допустим, функция принимает два аргумента: флэш-объект и имя метода в виде строки. Я хочу сделать eval для object.method () внутри этой функции. Возможно ли это, если да, объясните, пожалуйста, как это можно сделать.
Поскольку метод flash-объекта не является стандартной функцией javascript, я думаю, что невозможно связать функцию через bind (). Есть ли другая альтернатива?
Thx,
Chandra