Отправка текстового кросс-домена по букмарклету - PullRequest
4 голосов
/ 03 февраля 2010

Мне нужен пользователь, чтобы перейти на определенную страницу, на которой есть определенный раздел, полный полезного текста. Затем щелкните мой букмарклет и отправьте текст в этом div обратно на мой сервер, который отличается от текущего домена. Я успешно вставил jQuery в клик букмарклет и выделил текст. Теперь мне нужно найти способ отправить этот текстовый междоменный домен на мой сервер. Я пробовал JSONP с jQuery, и мой текст слишком длинный для URL. Моя вторая идея состояла в том, чтобы открыть новое окно и загрузить страницу из моего домена, а затем каким-то образом вставить выделенный текст в новое окно, после чего пользователь мог нажать «Отправить» и отправить эти данные на мой сервер. Это не сработало по причинам межсайтового JavaScript. У кого-нибудь есть опыт или идеи для этого? Спасибо.

Ответы [ 3 ]

4 голосов
/ 04 февраля 2010

Создайте форму (с DOM) и отправьте данные (возможно, вы захотите настроить таргетинг на iframe, но он будет запущен и забыт).

3 голосов
/ 16 марта 2012

Вот пример для отправки текста на удаленный сервер. И вы можете напечатать javascript на удаленном сервере, если вы хотите изменить страницу, на которой есть Iframe, чтобы сказать что-то вроде успеха. Или всплывающее окно, говорящее, что это закончено. На удаленном сервере вы можете распечатать это, чтобы сделать всплывающее окно:

<script> parent.document.getElementById('postmessage').style.display='block'; parent.alert('Successfully posted');</script>

На веб-странице вы хотите отправить информацию из формы и подобного Iframe.

<span id="postmessage" style="display:none">Success Message</span>
<form action="http://www.remoteserver.com/upload_test.php" method="post" target="post_to_iframe">
  <input type="hidden" value="the text to send to remote server" />
  <input type="submit" value="Submit" />
</form>

<!-- When you submit the form it will submit to this iFrame without refreshing the page and it will make the popup and display the message. -->
<iframe name="post_to_iframe" style="width: 600px; height: 500px;"></iframe>
2 голосов
/ 31 марта 2012

Используйте JavaScript для создания iframe. Затем добавьте форму в iframe и отправьте ее. Как только форма будет отправлена, обратный вызов onload сработает.

var i=document.createElement('iframe');
i.setAttribute('name', 'frame-id');
i.setAttribute('id', 'frame-id');
i.setAttribute('allowtransparency', 'true');
i.setAttribute('style', 'border: 0; width: 1px; height: 1px; position: absolute; left: 0; top: 0;');
i.setAttribute('onload', 'iframeFormSubmitted();');

document.body.appendChild(i);

var html = '<html><body>' +
'<form action="/post_url" method="post" id="iframe-form" accept-charset="utf-8">' +
'<input type="hidden" name="id" value="' + your_text + '"/>' +
'</form>' +
'<scr'+"ipt>var e=encodeURIComponent,w=window,d=document,f=d.getElementById('f');" +
"d.getElementById('iframe-form').submit();" +
'</scr'+"ipt></body></html>";

window.frames['frame-id'].document.write(html);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...