Я новичок в этом сайте, поэтому я прошу прощения, если форматирование этого вопроса выглядит как мусор.
В IE7, когда я добавляю SELECT
метод с прототипом Element.addMethods
и затем снова вызываю Element.addMethodsдобавленный мною метод пропал.
Пример:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>
<script type="text/javascript">
Element.addMethods(
'SELECT',
{
getSelected : function(elem){
elem = $(elem);
if(!elem.multiple){
return elem.options[elem.selectedIndex] ? $(elem.options[elem.selectedIndex]) : null;
}
return $A(elem.options).findAll(function(option){return option.selected;}).map(Element.extend);
}
}
);
Element.addMethods();
function displayResult(elem){
var selected = $(elem).getSelected();
if(Object.isArray(selected)){
var ret = '';
selected.each(function(optionElem){
ret += (ret ? ', ' : '') + option.innerHTML;
})
alert('['+ret+']');
}
else {
alert(selected.innerHTML);
}
}
</script>
</head>
<body>
<form>
Select your favorite fruit:
<select id="mySelect">
<option>Apple</option>
<option>Orange</option>
<option>Pineapple</option>
</select>
</form>
<input type='button' value='Display' onclick='displayResult("mySelect")'>
</body>
</html>
Я понимаю, что в этом примере вызов Element.addMethods () является излишним, но он поступает из библиотеки, которой я не пользуюсь.не имеет доступа к обновлению.Я, однако, имею контроль над тем, как метод SELECT
добавляется, но не там, где при выполнении кода это происходит.
Любые мысли о том, как предотвратить удаление метода, специфичного для тега,используя приличный браузер?