Portal_JS,用JS实现的Portlet效果

2023-11-13

有一年多没有关顾自己的博客了,然还有部分博友造访,令我万分感动,现在发布一下最近的一个组件:PortletWin

/**
 * @package ElementUtils.js
 * @author: 熊水林(xionglb@163.com)
 * @version:版权所有(2008-7-13)
 *
 * 这个包是为方便操作页面元素提供接口,包括拖拽、拉伸、覆盖等
 * 综合应用场景:Portlet、ModalDiv等
 */

//---------------------------------------------------------------------------------------
/**
 * @title:标题
 * @content:内容
 * @display:是否显式
 * @mode: 最大化/最小化
 */
function PortletWin(id, title, content, left,top,width,height, zindex, display, mode){
   this.id = id;
   this.title = title;
   this.message = content;
   this.width = width;
   this.height = height;
   this.left = left;
   this.top = top;
   this.zIndex = zindex;
   this.display = display;
   this.mode = mode ? mode : 0;

   this.build();
}
/**
 * 标题栏按钮的宽度12px,边框3px
 */
PortletWin.prototype.build = function(){
    //标题栏
    var str = "<div id='portlet_win_"+ this.id +"' style='position:absolute;z-index:"+this.zIndex+";' οnclick='focus_portletWindow(/""+this.id+"/")'>";
     str += "<div id='xWin_title_"+ this.id +"' class='xWindow_title' style='width:"+ this.width+";left:"+ this.left +";top:"+ this.top+";'>"
         + "<span id='xWind_title_text_"+this.id+"' style='width:" + (this.width-2*12-3) + ";padding-left:3px;'"
         + " οndblclick='changeWinMode()'>" + this.title + "</span>"
         + "<span class='win-function' οnclick='changeWinMode()'>0</span>"
         //+ "<span class='win-function' οnclick='changeWinMode()'>1</span>"
         + "<span class='win-function' οnclick='close_portletWindow()'>r</span>"
         + "</div>"
     //窗体显示区域
         + "<div id='xWin_body_"+this.id+"'class='xWindow_body' style='width:"+ this.width+";height:"+ this.height+ ";left:"+this.left+";top:"+(this.top+20)
         + ";'>" + this.message + "</div>"
         + "</div>"
    //窗体背景
       /*+ "<div id='xWin_shadow_"+ this.id +"' class='xWindow_shadow' style='"
         + "width:" + this.width + ";height:" + (this.height+20) + ";top:" + this.top + ";left:" + this.left + ";"
         + "z-index:" + (this.zIndex-1) + ";' />";*/
    document.body.insertAdjacentHTML("beforeEnd", str);

    var div_title = document.getElementById("xWin_title_"+this.id);
    var div_body = document.getElementById("xWin_body_"+this.id);
    var div_title_text = document.getElementById("xWind_title_text_"+this.id);
    var xtitle = MovableElement(div_title);
    var xbody = ResizableElement(div_body);
    var div_win = document.getElementById("portlet_win_"+this.id);

    div_win.onmousemove = function(){
       /*move*/
       div_body.style.left = div_title.style.pixelLeft;
       div_body.style.top = div_title.style.pixelTop+20;
       /*resize width*/
       div_title.style.width = div_body.style.width;
       div_title_text.style.width = div_title.offsetWidth-2*12-3;
    }
}
function changeWinMode(){
    var object = event.srcElement;  //title-text or title-button
    var xbody = object.parentElement.nextSibling;
    object = object.parentElement.children[1];
    if (object.innerHTML == "0"){
       object.innerHTML = "2";
       xbody.style.display = "none";
    }else{
       object.innerHTML = "0";
       xbody.style.display = "block";
    }
}
function close_portletWindow(){
    var object = event.srcElement;
    var xwin = object.parentElement.parentElement;
    xwin.style.display = "none";
}
function display_portletWindow(id){
    document.getElementById("portlet_win_"+id).style.display = "block";
}
var prefocus_xwin = null;
function focus_portletWindow(id){
    var focus_xwin = document.getElementById("portlet_win_"+id);
    var winTitle = focus_xwin.children[0];
    if (prefocus_xwin!=null && prefocus_xwin!=focus_xwin){
       prefocus_xwin.children[0].style.backgroundColor = winTitle.style.backgroundColor;
       prefocus_xwin.children[1].style.borderColor = winTitle.style.backgroundColor;
    }
    winTitle.style.backgroundColor = "#3333FF";
    focus_xwin.children[1].style.borderColor = winTitle.style.backgroundColor;
    prefocus_xwin = focus_xwin;
    var observer = new ShowObserver(focus_xwin);
    observer.promoteTag("DIV");
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Portal_JS,用JS实现的Portlet效果 的相关文章

  • 如何有条件地实例化不同的子类?

    例如 在main函数中 我想获取用户的输入 根据输入 我将创建一个Rectangle or a Circle 它们是子类Object 如果没有输入 或未知 那么我将只创建一个通用对象 class Object public Object v
  • C++专门化模板类函数,无需重复代码

    我想编写5个不同的类 每个类都有许多完全相同的成员函数 除了每个类都有一个特殊的成员函数 我可以写这个避免代码重复吗 问候 阿列克谢伊斯 下面是我的代码的一个非常简短的版本 它会引发错误 template test cpp 15 35 er
  • 如何实现 JSR 规范

    我正在考虑实现一两个 JSR API 我还没有阅读整个规范 计划是在编写实现代码时阅读它们 但我对它们非常熟悉 我读到 JSR 流程包括实现测试兼容性工具包 TCK 以测试所述 JSR 实现 在我开始编写一堆单元测试来验证我的实现的正确性
  • Python默认继承?

    如果我在Python中定义一个类 例如 class AClass slots a b c 它继承自哪个类 貌似没有继承object 如果定义一个类并且不声明任何特定的父类 则该类将成为 经典类 其行为与从对象继承的 新式类 略有不同 请参阅
  • C# 中的方法与属性 - 有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 属性与方法 https stackoverflow com questions 601621 properties vs methods 在方法中 您也可以键入一些代码 也可以在属性中键入一些代码 例
  • 如何使用下面定义的类?

    class A public B b class B public A a 我不能在 A 类 B b 中写入 因为 B 类定义如下 有什么办法让它发挥作用吗 thanks 这不可能 您需要在其中一个类中使用指针或引用 class B for
  • 有没有办法使用 perf 工具查找流程中各个功能的性能?

    我正在尝试在流程中实现各个功能的性能 我该如何使用 perf 工具来做到这一点 还有其他工具吗 例如 假设 main 函数调用函数 A B C 我想分别获得主要功能以及功能 A B C 的性能 有没有一个很好的文档来了解 perf 源代码
  • C++ 函数作为模板参数与参数传递

    在 C 中 有两种将一个函数传递给另一个函数的方法 这两种方法看起来是等效的 include
  • 隐藏包中未记录的函数 - 使用 .function_name?

    我需要在包中提供一些功能 但我不想导出它们或为它们编写文档 我只是将它们隐藏在另一个函数中 但它们需要可供多个函数使用 因此这样做会成为范围界定和维护问题 这样做的正确方法是什么 我的意思是他们是否需要特殊的名字 他们是否会去其他地方 R子
  • 在新窗口中打开谷歌地图。

    我创建了一个 Google Map API 我想在新选项卡 窗口 中打开它 我可以知道我的代码有什么问题吗 我可以打开新选项卡 但无法显示 Google 地图 下面是我的代码 谢谢 function newWindow var myLatl
  • PHP echo 与 PHP 短 echo 标签

    它们的安全性相同吗 我被告知使用 或者 当在 JavaScript 内回显数据时 它必须是 JavaScript 编码的
  • 在一个函数中返回两个变量[重复]

    这个问题在这里已经有答案了 考虑以下代码 demo http jsfiddle net m59Fg function test var h Hello var w World return h w var test test alert t
  • 创建可以传递参数而无需创建新组件的函数

    我的问题与这个问题有关React用于渲染函数中的绑定函数 以下不是好的做法 render div 因为每次重新渲染都会向页面添加一个新功能 最终导致浏览器内存不足 解决方案是这样做 constructor this callFunction
  • 创建线程-传递参数

    我正在尝试创建多个线程 每个线程计算素数 我正在尝试使用线程创建将第二个参数传递给函数 它不断抛出错误 void compute prime void arg void arg2 这是我的 main 和创建线程 max prime 之后的
  • Lambda 演算和教会数字混淆

    我正在尝试了解 lambda 演算和丘奇数字的基础知识 我已经进行了大量的阅读和练习 但我似乎一直试图了解某些函数是如何工作的 我坚持的例子如下 也许有人可以解释我哪里出了问题 1 的丘奇数可以表示为 f x f x The exponen
  • 为什么 Swift 中委托方法需要公开?

    我正在快速开发一个框架 我正在创建一个处理框架中 BLE 内容的类 这个类应该是公共的 因为我需要从使用我的框架的外部应用程序访问这个类 我的班级结构如下 public class MyClass NSObject CBCentralMan
  • 什么是 PHP 中的呼叫转移和静态呼叫或后期静态绑定? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我从网站上获得了一个代码示例 但我很难理解输出 我正在分享代码 class A public static function foo
  • 将我的数据库类与项目中的其他类一起使用

    我有一个自己编写的自定义数据库类 还有一个用户类和一个站点类 MySQL 类有这样的方法 connect query clean fetch 用户等级 register login logout resetPass 站点类别 updateT
  • 在 Javascript 中获取类的所有实例

    我以为这个问题已经有了答案 但我似乎找不到答案 如何在 Javascript 中的此类的所有实例上运行特定的类方法 这必须在我不知道实例名称的情况下完成 我想我可以在类中使用某种静态变量来存储所有实例 但这在 JS 中似乎不存在 那么如何在
  • Python 中函数未定义错误

    我试图在 python 中定义一个基本函数 但当我运行一个简单的测试程序时 我总是收到以下错误 gt gt gt pyth test 1 2 Traceback most recent call last File

随机推荐

  • RSA算法的数论原理与实现

    RSA算法的数论原理与实现 RSA算法是一种常用的非对称加密算法 能够确保数据的安全性和完整性 其基本原理是利用大素数的乘积进行加密和解密操作 而且在目前的计算机领域中 RSA算法被广泛应用于各种网络通信和数据传输中 一 数论知识和原理 质
  • 电脑预览,电脑怎么预览psd格式?

    经常使用PS的朋友们都知道Photoshop文档的默认格式是psd格式 可是在电脑上可能不能像jpg图片一样显示缩略图预览 遇到这种情况我们该怎么办 要是电脑上并没有安装PS软件又该怎么预览 下面我们就一起来看看哪些解决方法 步骤如下 方法
  • Mysql中having语句与where语句的用法与区别

    分析 回答 我们在写sql语句的时候 经常会使用where语句 很少会用到having 其实在mysql中having子句也是设定条件的语句与where有相似之处但也有区别 having子句在查询过程中慢于聚合语句 sum min max
  • 网络安全——数据链路层安全协议

    作者简介 一名云计算网络运维人员 每天分享网络与运维的技术与干货 座右铭 低头赶路 敬事如仪 个人主页 网络豆的主页 目录 前言 一 数据链路层安全协议简介 1 数据链路安全性 二 局域网数据链路层协议 1 本地链路局域网 LAN 2 广域
  • 学习笔记:简谈推挽电路

    推挽电路 push pull 就是两个不同极性晶体管间连接的输出电路 推挽电路采用两个参数相同的功率BJT管或MOSFET管 以推挽方式存在于电路中 各负责正负半周的波形放大任务 电路工作时 两只对称的功率开关管每次只有一个导通 所以导通损
  • 数据库数据恢复-Oracle数据库数据恢复案例

    数据库数据恢复环境 Oracle数据库ASM磁盘组有4块成员盘 数据库故障 分析 Oracle数据库ASM磁盘组掉线 ASM实例无法挂载 用户联系我们要求恢复oracle数据库 数据库数据恢复工程师拿到磁盘后 先将所有磁盘以只读方式进行扇区
  • 第六天 01-hydra工具windows远程桌面的密码爆破

    windows远程桌面的密码爆破 概述 RDP是Windows的远程桌面协议 所占用的端口默认为3389 这个是可以修改的 要求 我们要暴力破解3389号端口的前提是对方的3389号端口是开放的 爆破工具 kali使用hydra 九头蛇 工
  • python文件开头两行#!/usr/bin/python和# -*- coding:utf-8 -*-解释以及Pycharm自动创建py文件头部信息

    我们常见到python文件的前两行都会写上如下两行代码 下面我分别解释这两条语句的意义 并介绍pycharm中自动生成py文件头部信息的方法 usr bin env python coding utf 8 或者 usr bin python
  • vs2019 中编译和使用 protobuf 库

    背景 protobuf 是一种跨平台的序列化结构数据的方法 可用于网络数据传输及存储 本文对使用 vs2019 编译 protobuf 库文件进行说明 相关代码及安装文件均来自官网下载 VS2019 编译 protobuf 生成 sln 工
  • 实时语音通讯技术的应用场景与挑战

    随着互联网和移动通信技术的快速发展 实时语音通讯技术已经成为人们日常生活和工作中不可或缺的一部分 实时语音通讯技术可以让人们通过网络进行实时语音通话 不受时间和地点的限制 带来了极大的便利和效率提升 本文将探讨实时语音通讯技术的应用场景和挑
  • Java并发之ThreadLocal源码分析(第二篇:添加元素)

    前言 两个与添加元素相关的方法 initialValue 用于初始化一个默认值 set 用于添加一个元素 set 方法分析 public void set T value Thread t Thread currentThread Thre
  • Pycharm运行unittest报错ModuleNotFoundError: No module named ‘pytest‘解决

    使用unittest未import pytest相关功能语句 在pycharm中右键run的时候报错 Traceback most recent call last File B Application pycharm PyCharm 20
  • FCK配置中文版(转自网络,未知来源)

    1 FCKConfig CustomConfigurationsPath 自定义配置文件路径和名称 2 FCKConfigFCKConfig EditorAreaCSS FCKConfig BasePath css fck editorar
  • MATLAB 图像平移操作(转)

    function outImage immove inImage Tx Ty m n size inImage Tx fix Tx Ty fix Ty move xif Tx lt 0 inImage imcrop inImage abs
  • Android 下拉选择框自定义view

    首先来看一下实现的效果 基本思路 继承PopupWindow的自定义View 说明 下图这部分自己布局 本文中主要说明的是点击某个分类显示的下拉实现 第一步 自定义 SpinnerPopuwindow继承PopupWindow Create
  • Markdown编写公式

    文章目录 Markdown编写公式 一 修改设置 二 希腊字母 三 一些数据结构 四 定界符 五 可变大小的符号 六 函数名称 七 二进制运算符和关系运算符 八 箭头符号 九 其他特殊符号 十 上下标 十一 矩阵 十二 分段函数 1 分段函
  • 集群篇-k8s介绍

    TOC 集群篇 k8s介绍 一 集群业务介绍 集群篇 服务器的搭建 集群的管理 运维 1 集群业务介绍 集群 k8s及自动化部署 服务器的预警监控功能 二 k8s 集群部署 K8S部署 DevOps 百度云地址 提取码 1111 1 k8s
  • 扫雷(C语言版)

    引言 扫雷游戏是一款经典的逻辑游戏 它不仅考验玩家的观察力和决策能力 还能带给玩家休闲娱乐的乐趣 本文将介绍一个简单的扫雷游戏的实现 帮助读者了解这款游戏的基本原理和代码实现 一 游戏规则简介 扫雷游戏的目标是找到所有没有地雷的方块 同时避
  • 服务器操作系统的实时性,对虚拟化操作系统进行实时性调度的解决方案介绍

    图3 中断实时响应分析 虚拟操作系统应用中常会有以下3类事件的实时响应需要考虑 0类事件 底层硬件中断需要得到上层某个Domain的快速响应处理 1类事件 Domain GuestOS 之间的通信事件需要被另一个Doamin快速处理 2 类
  • Portal_JS,用JS实现的Portlet效果

    有一年多没有关顾自己的博客了 然还有部分博友造访 令我万分感动 现在发布一下最近的一个组件 PortletWin package ElementUtils js author 熊水林 xionglb 163 com version 版权所有