我在用replaceWith()替换div时试图保留事件数据。当我尝试它时,它无法找到事件。目前我正在使用postmessage调用消息事件列表器来替换潜在元素内的脚本(对于没有调用消息事件的时候)
$allResults
script.text包含我想要保留在“e.data.subtitleUrl”中的数据
答案 0 :(得分:0)
<强>更新强>
我做了一个例子。你可以查一下。
$('#click-div').click(function(e){
var script = document.createElement('script');
script.text = 'alert($("#added-script").data("subtitleUrl"));'
script.dataset.subtitleUrl = 'Hold the data';
script.setAttribute('id', 'added-script');
$('#element-to-replace').replaceWith(script);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='click-div'>
Click
</div>
<div id='element-to-replace'></div>
&#13;
我已将id添加到在函数中创建的script
元素。
您可以尝试data()
方法来保存数据。
eventer(messageEvent,function(e) {
console.log('origin: ', e.origin);
// Check if origin is proper
if( e.origin != 'http://domain.com' || e.origin != 'http://www.domain.com'){ return }
console.log('revieced message: ', e.data);
player.Resume({ uuid: e.data.rid, title: e.data.rtitle });
var script = document.createElement('script');
script.text = "player.ready(function () { player.ima(adOptions);player.ima.requestAds(); window.SubtitlesOctopusOnLoad = function () { var options = { video: player.tech_.el_, subUrl: $('#added-script').data('subtitle-url') || '<?php echo WEB_ROOT; ?>/files/<?php echo validation::safeOutputToScreen($file->subtitle); ?>', availableFonts: fonts, workerUrl: '<?php echo PLUGIN_WEB_ROOT; ?>/mediaplayer/assets/players/videojs/worker.js'};window.octopusInstance = new SubtitlesOctopus(options); window.octopusInstance.resize();}; if (SubtitlesOctopus) { SubtitlesOctopusOnLoad(); } });";
script.dataset.subtitleUrl = e.data.subtitleUrl;
script.setAttribute('id', 'added-script');
$('#subtitles').replaceWith(script);
}, false);
然后你可以通过$('#added-script').data('subtitle-url')
获得subtitleUrl。