2016-08-15 2 views
0

Итак, я работаю над чат-приложением, и я хочу добавить смайлики. Поэтому я использовал две html-страницы. первая содержит текстовую область, когда мы адресуем сообщения и iframe, ссылающиеся на вторую страницу html.Как связать две html-страницы

<div class="col-12"> 
    <textarea class="col-12 row-12 var_MessageInput" id="textmsg" placeholder="Write a reply..."></textarea> 
</div> 

во второй HTML-странице У меня есть смайлик изображение

<img src="../../../images/sad_smile.gif" onclick="insertSmiley('sad');"/> 
<img src="../../../images/angel_smile.gif" onclick="insertSmiley('angel');"/> 
<img src="../../../images/happy_smile.gif" onclick="insetSmiley('happy');" /> 

Так я хочу, чтобы, когда я нажимаю на смайлик изображения, текст был вставлен в моей области текста таким образом я использовал следующий сценарий

function insertSmiley(smiley) { 
    var currentText = document.getElementById("textmsg"); 
    var smileyWithPadding = " " + smiley + " "; 
    currentText.value += smileyWithPadding; 
    currentText.focus(); 
} 

но doens't работы :(я думал, что проблема может быть в document.getElementById, так как это другая страница HTML, но я понятия не имею, как ее решить. Спасибо большого

+0

Попробуйте 'parent.document.getElementById (" textmsg ");' – TheUknown

+0

Спасибо за ваш ответ, но все же он не работает. – Chaymae

+0

У вас возникли ошибки в консоли? На какой странице находится функция 'insertSmiley'. Вы проверяли отладчик, не попали ли функции? Можете ли вы добавить полный код для обоих файлов i.e parent и iframe или можете настроить скрипт – TheUknown

ответ

0
  1. Включили вы в <script src="Scripts_Chatapp/emoticone.js"></script> в IFRAME тоже? Если да, удалите ссылку на скрипт из iFrame.

  2. Переместите ссылку сценария <script src="Scripts_Chatapp/emoticone.js"></script> в начало страницы с другими тегами сценария.

  3. Изменить onclick="insertSmiley('sad');"onclick="parent.insertSmiley('sad');".

Это вызовет родительскую функцию и внесут изменения на эту страницу, поскольку элемент существует в родительском.

+0

Спасибо, много работает: D – Chaymae

+0

Добро пожаловать! – TheUknown

+0

@Chaymae Если проблема решена, отметьте ответ – TheUknown

0

У вас есть одна опечатка в onclick="insetSmiley('happy');", она должна быть onclick="insertSmiley('happy');". Я проверил его, и это работает для меня.

+0

Я не вижу разницы в коде, который вы отправили – j08691

+0

Спасибо, я исправил его.Но это все еще не работает для меня :( – Chaymae

+0

Я думаю, он имел в виду, что я забыл «r» в моей insertSmiley на третьей строке – Chaymae

0

В коде JS используйте:

window.location = "second_HTML_Page.html" ; 
+0

Я пробовал, но он не работает :( – Chaymae

+0

Позвольте мне понять это, вы говорите, что например, этот кадр не ссылается на страницу html: ? Значение «ChatApp_OneConversation.html» не отображается в главном HTML-страница? –

0

Проблема заключается в том, что, когда функция вызывается в плавающем фрейме, осциллографы усложняются.

Решение должно заключаться в том, чтобы сделать функцию глобальным, определив ее на уровне window. И тогда, когда функция должна запускаться внутри iFrame, она может вызывать функцию родителя iFrame (главное окно).

Пример Fiddle: http://jsfiddle.net/e37rrtb1/2/

+0

Спасибо, я попробовал ваш ответ, но он дает мне эту ошибку. ChatApp_Interface_gridLayout.html: 1 Uncaugh t TypeError: window.parent.insertSmiley не является функцией – Chaymae

+0

Является ли функция определена как 'window.insertSmiley = function (smiley) {...' в окне * parent *? (т. е. emoticone.js должен быть включен в основное окно, а внутри файла функция должна быть определена с помощью 'window.') –

+0

Oh. получил спасибо – Chaymae