【问题标题】:Jquery events Draggable,Resizeable do not work with html '<object>' TagJquery 事件 Draggable、Resizeable 不适用于 html '<object>' 标签
【发布时间】:2019-10-01 11:31:24
【问题描述】:

我在一个项目中使用 Jquery Ui,其中像 &lt;img&gt;&lt;div&gt; 这样的 html 对象被拖动和调整大小,但对于交互式 SVG,我必须使用 &lt;object&gt; 来绘制和更改 svg 元素。但在这个阶段,我无法拖动元素并调整其大小。

我已经尝试过让它可以拖动和调整大小

var newcanvas = $(`<object>`).attr("data","http://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg").css("width","100%");

newcanvas.resizable();
newcanvas.draggable();

注意:newcanvas 是动态添加到某些 div 的对象,但同样的情况适用于 &lt;img&gt; 标签和其他但不适用于对象标签

如何解决这个问题?

【问题讨论】:

  • 欢迎来到 StackOverflow。最好包含一个最小、完整和可验证的示例:stackoverflow.com/help/mcve 根据您的描述,只要&lt;object&gt; 是 DOM 的一部分并且具有 Box 模型,这些应该可以工作。您在控制台中看到任何错误吗?

标签: jquery jquery-ui jquery-ui-draggable


【解决方案1】:

做了一些研究,&lt;object&gt; 是一个元素,但它似乎没有被渲染。考虑以下测试:

$(function() {
  function makeObject(d, t) {
    if (t == undefined) {
      t = $(".page");
    }
    var newcanvas = $(`<object>`).attr("data", d).css("width", "50%");
    newcanvas.appendTo(t);
    return newcanvas;
  }

  $("#makeObject").click(function() {
    var c = makeObject("https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg");
    c.draggable().resizable();
  });
  $("#clearObject").click(function() {
    $("object, .objectWrap").remove();
  });
  $("#wrapObject").click(function() {
    var w = $("<div>", {
      class: "objectWrap"
    }).css({
      width: "200px",
      height: "200px"
    }).appendTo(".page");
    var c = makeObject("https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg", w);
    c.css("width", "100%");
    w.draggable().resizable();
  });
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div class="page">
  <div class="tools">
    <button id="makeObject">Make Object</button>
    <button id="clearObject">Clear Object</button>
    <button id="wrapObject">Make Object w/Wrap</button>
  </div>
</div>

我建议用&lt;div&gt; 包装&lt;object&gt;,然后对其应用可拖动和可调整大小。这在 Stack Overflow 的其他几个场景中进行了讨论。以后一定要彻底搜索。

希望对您有所帮助。

【讨论】:

  • 非常感谢您的回复。我确实应用了这个解决方案来将这个&lt;object&gt; 标记打包到一个div 中,然后在div 上应用可拖动和可调整大小的事件。但它似乎不起作用。您可以测试自己的 sn-p,其中即使在包装 div 之后,可拖动也无法正常工作。可调整大小的作品,但它也会卡住并且不能有效地工作..
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多