【问题标题】:Wordpress admin - live post preview in iframeWordpress 管理员 - iframe 中的实时帖子预览
【发布时间】:2021-08-05 05:33:02
【问题描述】:

我的目标是在 Wordpress 管理员的自定义帖子类型编辑表单中显示实时预览。我明白了,我可以在后编辑表单中成功地在元/ACF 字段旁边显示带有预览的 iframe,如此线框图所示:

当我单击“预览更改”按钮时,iframe 内容已成功刷新。但是我想在更改某些 ACF 字段后自动执行此操作。所以我尝试用jQuery模拟点击这个按钮:

$('input, select', $('#acf-group_609ca87c411ae')).on('change', function() {
      $('a.preview').click();
});

但是当我这样做时,行为完全不同:不是刷新 iframe,而是刷新整个页面并显示消息:发布已更新。

我觉得我已经很接近让这个实时预览工作了,但我被这个简单的点击模拟困住了几个小时。你能帮帮我吗?

编辑:忘记 iframe 的事情 - 如果您是 wordpress 程序员,只需打开 WP 管理员,在编辑帖子屏幕上并尝试以编程方式模拟单击“预览更改”按钮。如果您得到与单击它相同的行为 - 在此处向我发布 javascript。谢谢!

【问题讨论】:

  • 好久没用过Wordpress了,随便猜猜。您可以查看通过单击“预览更改”按钮触发的功能,并使用该代码直接刷新 iframe,而不是调用按钮上的单击事件。
  • 我尝试直接调用代码但没有成功。看来我需要调用多个结果触发器,但我还没有找到确切的顺序和顺序......
  • 好的,在这种情况下,您可能需要弄清楚那部分,因为我没有看到任何其他方式来以编程方式触发按钮

标签: jquery wordpress iframe admin preview


【解决方案1】:

您正在触发将重新加载页面的点击。它的默认行为。 如果您不希望链接继续进行,则需要停止触发事件。你可以试试:

//This should trigger the click but prevent the default behaviour of reloading the page
//Untested
$('input, select', $('#acf-group_609ca87c411ae')).on('change', function() {
  $('a.preview').click(function(e){
    e.preventDefault();
  });
});

【讨论】:

  • 您的代码什么都不做,因为它只是设置事件处理程序。但即使我在它之后触发点击,页面也会完全刷新:$('a.preview').click(function(e){ e.preventDefault(); }).click();
  • 所以你说的实际上是你想模拟对该元素的点击,以便它所做的一切都发生,它只是不刷新页面。好像是通过 ajax 完成的?
  • 当我点击这个按钮时,它不像标准链接。似乎有一些处理程序会导致不同的行为,例如将编辑表单提交到目标窗口。我只想用 Javascript 模拟与手动单击此按钮相同的行为。做同样的事情。我查看了这些事件处理程序的 wordpress 核心 javascript,并尝试将其中的一些复制到我的代码中,但没有成功。似乎需要按特定顺序触发多个触发器才能发生这种行为......
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2011-06-22
  • 2023-03-27
  • 2014-11-05
  • 2016-04-16
  • 2014-12-08
  • 2023-03-11
相关资源
最近更新 更多