Чтобы получить доступ к элементам iframe tinymce через jquery - PullRequest
3 голосов
/ 30 ноября 2010

Я использую Tinymce Editor. При необходимости получить доступ к iframe с jquery Я пытался ...

var iframe = $('#comment_ifr')[0];//document.getElementById('comment_ifr');// or $('#comment_ifr')[0]; the other is just faster.
alert(iframe);
var doc = iframe.document || iframe.contentDocument || iframe.contentWindow && iframe.contentWindow.document || null;
   //if( !doc ) return;
   //and now jquery

$( "img", doc ).click(function() {
    alert('image clicked');
   });

----------

В приведенном выше коде однажды изображение вставлено в рамку tinymce. Как только я нажимаю на это изображение, мне нужно вызвать событие. Помоги мне.

Ответы [ 5 ]

5 голосов
/ 30 ноября 2010

Вы можете упростить доступ к документу iframes, используя:

var doc = tinymce.get('comment').getDoc();

РЕДАКТИРОВАТЬ: Чтобы достичь желаемого, вы можете перехватить событие click внутри tinymce и делать то, что вы хотитеЭто.Вам нужно вставить этот код в собственный плагин tinymce или использовать параметр инициализации tinymce:

ed.onClick.add(function(ed, evt){

    // Firefox
    if (evt.explicitOriginalTarget){ // this is the img-element
      if (evt.explicitOriginalTarget.nodeName.toLowerCase() == 'img'){
        console.log(evt.explicitOriginalTarget);
        alert('image clicked');
      }
    }
    // IE
    else if (evt.target) { // this is the img-element
      if (evt.target.nodeName.toLowerCase() == 'img'){
        console.log(evt.target);
        alert('image clicked');
      }
    }
}); // end click event
0 голосов
/ 26 января 2019

Для tinyMCE до версии 4 (т.е. tinymce 3.5.12 и менее) вы должны установить

var iframe = $('#editable_container_ifr');
var editorContent = $('#tinymce[id="tinymce"]', iframe.contents()).html();
console.log(editorContent);

в скрипт для jquery

editable_container - это идентификатор вашей текстовой области

Поскольку с tinyMCE 4 смайлики не работают, я вернулся к 3.3.12, и все работает

0 голосов
/ 27 октября 2015

Если вы используете версию 4, вы можете получить доступ к элементам в iframe следующим образом:

1.) Если у вас есть прямой доступ к объекту редактора:

tinymce.init({
  setup : function(editor) {
    editor.dom.$('#thingId');
  }
});

2.) Если у вас нет прямого доступа к объекту редактора:

tinymce.activeEditor.dom.$('#thingId');
0 голосов
/ 01 декабря 2010

Это мой последний код для получения источника изображения в редакторе tinymce

ed.onClick.add(function(ed, evt){

    // Firefox
    if (evt.explicitOriginalTarget){ // this is the img-element
      if (evt.explicitOriginalTarget.nodeName.toLowerCase() == 'img'){
        alert(evt.explicitOriginalTarget.src);
      }
    }
    // IE
    else if (evt.target) { // this is the img-element
      if (evt.target.nodeName.toLowerCase() == 'img'){
        alert(evt.target.src);
      }
    }
}
0 голосов
/ 30 ноября 2010

Попробуйте:

$("#comment_ifr").contents().filter("img").click(function() {
    alert('clicked');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...