我正在使用TinyMCE 3.4.9并试图强制媒体插件始终使用Flash嵌入而不是iFrame嵌入。
出于安全考虑,我不想允许嵌入任何iFrame。
我手动格式化了URL以获取Flash嵌入对象而不是iFrame对象。
IE-
有没有办法做两个中的一个:
我的TinyMCE初始化代码是:
<script language="javascript" type="text/javascript">
tinyMCE.init(
{
paste_remove_styles : true,
gecko_spellcheck : true,
theme_advanced_font_sizes : "1,2,3,4,5",
extended_valid_elements:"script[charset|defer|language|src|type]",
theme : "advanced",
mode: "exact",
plugins: "inlinepopups,emotions,searchreplace,paste,media",
elements : "blogcontent",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,sub,sup,|,fontselect,fontsizeselect,forecolor,|,link,unlink,|,backcolor",
theme_advanced_buttons2 : "justifyleft,justifycenter,justifyright,|,search,replace,|,image,charmap,emotions, media,|,undo,redo",
theme_advanced_buttons3 : "",
theme_advanced_resize_horizontal : false,
theme_advanced_resizing : false,
file_browser_callback : 'file_browser',
relative_urls : false,
remove_script_host : false,
paste_retain_style_properties : "font-size,color,font-family,background-color",
setup :
function(ed)
{
ed.onKeyUp.add(
function(ed, e)
{
ed.nodeChanged();
}
);
}
}
);
</script>
谢谢,
答案 0 :(得分:1)
由于我还没有找到强制嵌入YouTube视频的方法,因此我创建了一个解决iframe安全问题的方法。
我已将iframe添加到允许的标签列表中,并在保存后向用户显示内容时,我将白名单过滤器应用于任何iframe,这些iframe会拉出白名单中没有src的任何iframe。
function filterIframeBySource($text, $allowed_sources)
{
// regex to retrieve just the iframes
$regex = '/<iframe[0-9a-zA-Z \.\/=>:\-"]*<\/iframe>/';
$matches = array();
$reg_pos = preg_match($regex, $text, $matches);
// loop through each match and check the src for that iframe
$src_expression = '/ src="http:\/\/('.str_replace('.', '\.', implode('|', $allowed_sources)).')[0-9a-zA-Z\/-]*" /';
foreach($matches as $match)
{
$src_pos = preg_match($src_expression, $match);
if($src_pos !== false && $src_pos === 0)
$text = str_replace($match, '[Removed iFrame]', $text);
}
return $text;
}
希望这有帮助。