【问题标题】:How to change frame to div and load content into div如何将框架更改为 div 并将内容加载到 div
【发布时间】:2014-11-22 20:09:18
【问题描述】:

有什么方法可以将 iframe 及其包含的所有属性转换为 div 或 php。

<iframe src='left_nav.php' name='left_nav' class="daemon" scrolling="auto" frameborder='0' height='100%' width="100%"></iframe>

如果我使用php包含函数调用left_nav.php文件:

<?php include left_nav.php; ?>

如何将框架中加载的内容加载到 div 中。

ma​​in.title文件中(其他文件)

function toencounter(rawdata) {


document.getElementById('EncounterHistory').selectedIndex=0;
if(rawdata=='') {
    return false;
} else if (rawdata=='New Encounter') {
    top.window.parent.left_nav.loadFrame2('nen1','RBot','forms/newpatient/new.php? autoloaded=1&calenc=')
    return true;
} else if (rawdata=='Past Encounter List') {
    top.window.parent.left_nav.loadFrame2('pel1','RBot','patient_file/history/encounters.php')
    return true;
}
var parts = rawdata.split("~");
var enc = parts[0];
var datestr = parts[1];
var f = top.window.parent.left_nav.document.forms[0];
frame = 'RBot';
if (!f.cb_bot.checked) {
    frame = 'RTop';
}

parent.left_nav.setEncounter(datestr, enc, frame);
top.frames[frame].location.href  = '../patient_file/encounter/encounter_top.php?set_encounter=' +  enc;
}

left_nav文件中

setEncounter(edate, eid, frname) {
if (eid == active_encounter) return;
if (!eid) edate = '<?php xl('None','e'); ?>';
var str = '<b>' + edate + '</b>';
setDivContent('current_encounter', str);
active_encounter = eid;
encounter_locked=isEncounterLocked(active_encounter);
reloadEncounter(frname);
syncRadios();
var encounter_block = $(parent.Title.document.getElementById('current_encounter_block'));
var encounter = $(parent.Title.document.getElementById('current_encounter'));
var estr = '<a href=\'javascript:;\' onclick="parent.left_nav.loadCurrentEncounterFromTitle()">  <b>' + edate + ' (' + eid + ')</b></a>';
encounter.html( estr );
encounter_block.show();
}

function loadCurrentEncounterFromTitle() {
  top.restoreSession();
  top.frames[ parent.left_nav.getEncounterTargetFrame('enc')   ].location='../patient_file/encounter/encounter_top.php';
}

这是 loadFrame2

的 JS 脚本
function loadFrame2(fname, frame, url) {
var usage = fname.substring(3);
if (active_pid == 0 && usage > '0') {
alert('<?php xl('You must first select or add a visitor.','e') ?>');
return false;
}
if (active_encounter == 0 && usage > '1') {
alert('<?php xl('You must first select or create an encounter.','e') ?>');
return false;
}
if (encounter_locked && usage > '1') {
alert('<?php echo xls('This encounter is locked. No new forms can be added.') ?>');
return false;
}
var f = document.forms[0];
top.restoreSession();
var i = url.indexOf('{PID}');
if (i >= 0) url = url.substring(0,i) + active_pid + url.substring(i+5);
if(f.sel_frame)
{
  var fi = f.sel_frame.selectedIndex;
  if (fi == 1) frame = 'RTop'; else if (fi == 2) frame = 'RBot';
 }
if (!f.cb_bot.checked) frame = 'RTop';
top.frames[frame].location = '<?php echo "$web_root/interface/" ?>' + url;
if (frame == 'RTop') topName = fname;
return false;
}

【问题讨论】:

  • 添加name 属性有什么意义?它的唯一(现代)目的是允许您使用链接定位框架,如果那里不再有框架,您将无法做到这一点。
  • 你说得对,昆汀我也需要达到这个目的。感谢您的建议。
  • 那么,这段代码也是iframe 的一部分,而您更改了另一个iframe 的来源?您是否只需要删除 left_nav iframe 或其他 iframe?
  • 我只想删除left_nav iframe,left_nav.php是一个文件,其中创建了函数/方法setEncounter..
  • 再次更新了答案。你必须做一些思考,但你应该用这个来完成它。

标签: php html iframe


【解决方案1】:

由于您希望将其他文件 (left_nav.php) 的内容加载到 div 而不是 iframe,因此您可以使用多种方法来做到这一点。

1) JS:

创建一个div 容器来保存您的内容:

<div id="left_nav"></div>

现在,您可以使用jQuery 轻松加载内容:

onClick="loadContent('path/to/file/left_nav.php')"

这将是您的 loadContent 函数:

function loadContent(path){
  $("#left_nav").load(path);
}

2) PHP:

您也可以使用 PHP(将参数传递给您当前在yourfile.php?m=left_nav 上的 URL)。然后你可以包含该文件,带有一个控制器(MVC 原理 -> 如果你想了解更多信息):

<?php
  if($_GET["m"] == "left_nav")
    include("left_nav.php");
?>

编辑:

您似乎需要两者兼而有之。您需要插入 div 并同时加载内容,而不是您的 iframe

<div id="left_nav"><?php include("left_nav.php"); ?></div>

这应该等同于创建iframe。现在,当您在 JS 脚本中更改 iframesrc 时,而不是使用这一行:

top.window.parent.left_nav.loadFrame2('pel1','RBot','patient_file/history/encounters.php');

尝试更改 div 的内容,如我之前在 1) 中所述,但您应该只需要 loadContent 函数。

【讨论】:

  • div 标签上不允许使用属性名称
  • 是的,我知道,但是既然你问了……那你在 PHP 中设置 name 属性是什么意思?
  • 我想像一个框架一样定位一个 div,它被另一个文件中的函数或变量定位,就像这样定位一个框架 onClick="return top.window.parent.left_nav。 loadFrame2('new0','RTop','new/new.php'
  • 所以通过点击一个元素,您想将新内容加载到div 而不是iframe
  • 是的,我使用的是 javascript,此链接从该 javascript 定位到另一个文件中的框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
相关资源
最近更新 更多