#javascript #facebook #forms #iframe #mootools
#javascript #Facebook #формы #iframe #mootools
Вопрос:
У меня такое чувство, что это легко, но я работал над этим несколько часов без особого успеха.
Я использую iframe-версию модальных окон LightFace:
http://davidwalsh.name/facebook-lightbox
Я пытаюсь найти хороший способ заставить форму отправлять, когда они нажимают кнопку отправки, которую я добавляю на панель. Лучшее, что я нашел до сих пор, это:
light = new LightFace.IFrame({ height:440, width:550, url: 'http://samplePage.html',
title: 'Sample' }).addButton('Submit', function() {
window.frames[window.frames.length-1].formName.submit();},'blue')
.addButton('Close', function() {light.close(); },true).open();
Я не очень уверен в этом коде, но я думаю, что для отправки он попадает в iframe, который я ищу, просто предполагая, что он предпоследний. Это работает на веб-странице. К сожалению, я создаю это для приложения Facebook, которое загружается внутри самого iframe Facebook. При загрузке на странице facebook код ничего не делает.
У кого-нибудь есть лучший способ добавить кнопку отправки в это?
Ответ №1:
Однако не должно возникнуть особых проблем с помещением iframe внутри iframe:
window.frames[window.frames.length-1].formName.submit();
… вполне может вызвать проблемы. Вы как бы отслеживаете свою форму, в то время как я бы попытался напрямую настроить таргетинг на элемент формы, то есть присвоить ему идентификатор:
<form id="myForm"><!--- some form stuff --></form>
и используйте знак доллара, чтобы добраться до него:
$('myForm').submit();
Комментарии:
1. @kasmir Это не сработало, когда я попробовал. Насколько я могу судить, это работает практически так же, как и то, что я делал.
$('#myForm').submit();
не сработало, ноwindow.frames[window.frames.length-1].$('#myForm').submit();
сработало (хотя только на собственной странице, а не в представлении iframe facebook). Я думаю, что javascript выполняется на родительской странице, поэтому мне нужно иметь возможность перейти к iframe перед запуском отправки. Я могу установить имя идентификатора и попытался работать с этим, но мне не повезло.2. Хорошо, возможно, вы могли бы попробовать другой подход, не используя «встроенный» метод от Lightface. Итак, просто добавьте прослушиватель событий со встроенным javascript в iframe :
<script type="text/javascript"> $('myForm').addEvent('click', function(el) { el.submit(); }); </script>
. Кроме того, вы можете попробовать метод getBox() из Lightface, если проблема может быть связана с тем, что элемент не «виден» при использовании iframe Facebook.3. Заставил его работать, используя метод getBox(). На самом деле это таблица, в которой находится iframe, но оттуда было не так уж сложно добраться до iframe. Спасибо за помощь.