javascript - 从用户脚本将独立于样式的 jQuery UI 对话框添加到 DOM

标签 javascript jquery jquery-ui greasemonkey userscripts

我想创建一个可移动、可调整大小的对话框,独立于所访问页面的样式。

我添加了 jQuery UI CSS:jQuery-UI is not working in my userscript without CSS, or with customization?

我尝试从 div 创建对话框,但样式被页面 CSS 修改。
如果页面有意外/奇怪的 CSS,内容可能无法读取。

最佳答案

您需要为要显示的对话框 DIV 定义自定义 CSS。如果页面有非常奇怪的 CSS,你应该用你自己的规则覆盖这些规则。您可以走极端,用“!mportant”声明所有自定义 CSS 规则。然后您将在该级别重置本地 CSS 之类的内容。

下面是一个最小的例子。在标题中查找我测试此脚本的几个站点。这适用于 Greasemonkey 3.11 和 Firefox 54.0.1

// ==UserScript==
// @name        so_test2
// @include     https://www.google.dk/*
// @include     https://www.daily.co.jp/*
// @include     http://www.ahram.org.eg/*
// @include     https://www.almesryoon.com/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
// @require     http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js
// @version     1
// @grant       none
// ==/UserScript==

// dialog DIV
$("body").append ('<div id="mydialog" style="display: none">'
+'<p>This is a jQuery Dialog.</p></div>');

$("head").append(
    '<link '
  + 'href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/le-frog/jquery-ui.min.css" '
  + 'rel="stylesheet" type="text/css">'
);
// custom CSS for dialog
$("head").append(
'<style type="text/css">'
+'#mydialog { '
+'margin: 0; padding: 0; border: 0;'
+'height:100%; max-height:100%;'
+'color:#f00 !important;'
+'font: normal 3em "Open Sans", sans-serif;'
+'font-size: 32px;'
+'vertical-align: baseline;'
+'line-height: 1; }'
+'#mydialog table { '
+'border-collapse: collapse;'
+'border-spacing: 0; }'
+'.ui-dialog-titlebar { font: italic 2em "Open Sans", sans-serif; }'
+'</style>'
);

// options for dialog, for help look in jQuery docs
var opt = {
    width:      500,
    minWidth:   400,
    minHeight:  200,
    modal: false,
    autoOpen: false,
    title:      "Draggable, sizeable dialog",
    zIndex:     1
};

$("#mydialog").dialog(opt).dialog("open");

// alternative way to position a dialog
$("#mydialog").parent().css({
    position:   "fixed",
    top:        "4.2em",
    left:       "4em",
    width:      "75ex"
});

这个答案很大程度上建立在 jQuery-UI is not working in my userscript without CSS, or with customization? 的基础上

关于javascript - 从用户脚本将独立于样式的 jQuery UI 对话框添加到 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46749293/

相关文章:

javascript - 堆叠对 javascript 中元素的更改以实现完美渲染的 CSS3 过渡

javascript - 使用 jquery 和 onchange 获取输入值

jquery-ui - 附加主题

jQuery UI - 更改按钮颜色

javascript - 浏览器中滚动放大或缩小是否会触发window.resize()?

Javascript 警报不适用于按钮单击

javascript - 使用 Node.js 创建可滚动/可重写的终端/stdout 接口(interface)

jQuery 砌体留下间隙

javascript - 仅突出显示悬停或放置到的可放置项

javascript - Angularjs 不会从外部 json 文件中读取