2015-09-02 3 views
-1

Мне нужно ввести html/javascript-код в каждый загружаемый HTML-код.Inject html/javascript-код в Flex AS3 HTML-класс

В программе используется класс HTML.

Я разобрал оригинальные файлы Flex3 и нашел this.

Важная информация? функция I Модифицированная/испытанная:

public function set htmlText(value:String) : void 
{ 
    _htmlText = value; 
    htmlTextChanged = true; 
    _location = null; 
    locationChanged = false; 
    invalidateProperties(); 
    invalidateSize(); 
    invalidateDisplayList(); 
    dispatchEvent(new Event("htmlTextChanged")); 
} 

public function set location(value:String) : void 
{ 
    _location = value; 
    locationChanged = true; 
    _htmlText = null; 
    htmlTextChanged = false; 
    invalidateProperties(); 
    invalidateSize(); 
    invalidateDisplayList(); 
    dispatchEvent(new Event("locationChange")); 
} 

я успешно изменил код заданного местоположения и управление, который загружается только http://www.example.com/.

Однако, сеттер htmlText, кажется, не вызывается, когда местоположение установлено с помощью location.

Это то, что я пробовал:

public function set htmlText(value:String) : void 
{ 
    _htmlText = "<html><h1>test</h1></html>" + value; 
    htmlTextChanged = true; 
    _location = null; 
    locationChanged = false; 
    invalidateProperties(); 
    invalidateSize(); 
    invalidateDisplayList(); 
    dispatchEvent(new Event("htmlTextChanged")); 
} 

мне нужно, чтобы посмотреть в flash.net.HTMLloader, но я не могу найти файл.

Я надеюсь, что кто-то может мне помочь и рассказать мне, где загружается HTML-код из местоположения и где он отображается, поэтому я могу его изменить до этого.

Заранее спасибо.

+0

Я не уверен, что вы спрашиваете здесь. Что такое «HTML-код»? Похоже, вы имеете в виду нечто иное, чем «

тест

», но это совсем не ясно. На более высоком уровне, чего вы пытаетесь выполнить, изменив «htmlText»? – Brian

+0

На самом деле я не хочу менять ** htmlText **. Я хочу изменить ** html **, который загружается в определенном месте. Например: я перехожу к http: // google.de и the, давайте позвоним ему, добавляет

hello not google

перед сайтом google html, так что в верхней части сайта googles ** привет не google ** есть. –

ответ

1

Я не знаю, что вы хотите привнести в свой контент HTML, но я думаю, что вы можете сделать это, когда событие завершения на HTMLLoader вашего HTML компонента обжигают, используя window объект, который:

глобальный объект JavaScript для содержимого, загруженного в управляющий элемент HTML ..

Таким образом, вы можете использовать его (window объект), как и в любом коде Javasript.

// for the example, I took the page of your current question 
var url:String = 'http://stackoverflow.com/questions/32348824/inject-html-javascript-code-into-flex-as3-html-class';  

html_content.location = url; 
html_content.htmlLoader.addEventListener(Event.COMPLETE, on_complete); 

И

protected function on_complete(e:Event): void 
{  
    var html_loader:HTMLLoader = html_content.htmlLoader; 
    var document = html_loader.window.document; 
    var _head = document.getElementsByTagName('head')[0]; 

    // create a new css class 
    var _class = '.akmozo { background: #ff9900; color: white; padding: 2px; }';       
    var _style = document.createElement('style'); 
     _style.appendChild(document.createTextNode(_class));   

    // create a new js function 
    var _js = 'function click_me(){ alert("Hello, how are you ?"); }'; 
    var _script = document.createElement('script'); 
     _script.appendChild(document.createTextNode(_js)); 

    _head.appendChild(_style); 
    _head.appendChild(_script); 

    // change the page's top bar background color to green 
    if(document.querySelector('.topbar-wrapper')) 
    { 
     document.querySelector('.topbar-wrapper').style.backgroundColor = 'green'; 
    }     

    // edit the title of your question, 
    // apply the new css class and call the js function 
    if(document.querySelector('.question-hyperlink')) 
    {    
     document.querySelector('.question-hyperlink').innerHTML += ' [ edited by <span class="akmozo" onclick="click_me()">AKMOZO</span> ]'; 
    } 

    // change the SO logo to my avatar     
    if(document.getElementById('hlogo')) 
    { 
     document.getElementById('hlogo').style.backgroundImage = 'url(https://i.stack.imgur.com/YAKpv.png?s=50)'; 
     document.getElementById('hlogo').style.backgroundRepeat = 'no-repeat'; 
    } 

    // do some changes in your comment 
    if(document.querySelector('#comment-52605069')) 
    { 
     document.querySelector('#comment-52605069 .comment-copy').style.color = 'green'; 
     document.querySelector('#comment-52605069 .comment-copy').style.fontWeight = 700; 
     document.querySelector('#comment-52605069 .comment-copy').style.fontSize = '24px'; 
     document.querySelector('#comment-52605069 .comment-user').innerHTML = '<span class="akmozo">akmozo</span>'; 
    }   
} 

Этот код даст вам что-то вроде этого:

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

Надеюсь, что это поможет.

+0

Ты потрясающий! Большое спасибо! –

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