2009-10-15 3 views
0

У меня есть 2 страницы в наборе фреймов, на первой странице у меня есть функция Javascript, вторая - форма asp.net с кнопкой, дело в том, что мне нужно вызвать функцию Javascript в первой страницы, когда пользователь нажимает на кнопку:Вызов функции Javascript из страницы asp.net в кадре

Я пытаюсь с:

ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script language=JavaScript>parent.frames[0].Function('parameter')</script>"); 

Там есть предупреждение («...»); в функции, но когда я это называю, я ничего не вижу, по-видимому, функция не выполняется.

¿Как я могу назвать функцию? Спасибо за помощь. & советует.

+1

Вы уверены, что первая страница загружается к тому времени, когда вторая страница вызывает функцию? –

+0

Да, я пробовал с HTML, и он отлично работает. – doc

+0

Вы пробовали в HTML с встроенным скриптом или скрипт также загружался через другой файл? Постарайтесь создать свою версию HTML как можно ближе к ASPX. Сравните с отображаемыми кодами ASPX. –

ответ

1

Попробуйте использовать FireBug (для firefox или используйте FireBug Lite для других браузеров), чтобы увидеть фактический HTML и скрипт, который имеет каждый кадр.
После того, как вы закончите, код создан правильно на ASP.net, продолжайте использовать FireBug, чтобы увидеть, где код вашего скрипта идет не так, используя точки останова.
Если вы хотите более быструю идею, попробуйте использовать некоторые тесты в коде вы поставите перед вызовом функции, попробуйте следующее:

alert(parent.frames.length); 
alert(parent.frames[0].Function); 
parent.frames[0].Function('parameter'); 
0

Большое спасибо, Дрор, для получения меня мимо трудоемкий хлопот!

Могу ли я добавить, что это выглядит, как можно использовать имя фрейма, в дополнение к индексу (простите меня, люди, если это очевидно):

родительскую HTM:
        :
    <frameset rows="120,*">
        <frame name="OverviewFrame" id="OverviewFrame" src="eoverview.htm">
        <frame name="LegendFrame" id="LegendFrame" src="">
    </frameset>
    <frameset cols="50%,50%">
        <frame name="ControlsFrame" id="ControlsFrame" src="zoomcontrols.htm">
        <frame name="InsetControlsFrame" id="InsetControlsFrame" src="insetcontrols.htm">
    </frameset>
        :

кадров НТМ (insetcontrols.htm):
    parent.frames['OverviewFrame'].enableSync(false);

(где eoverview.htm содержит функцию enableSync(bool))

проверено на FF3.6.3, Chrome 4.1.249. 1064, Safari 4.0.5, Opera 9.80, IE 8, режим совместимости с IE 8

+0

Счастлив, это помогло вам :) – Dror

Смежные вопросы