我正在开发一个依赖于jQuery的javascript小部件.小部件可能会也可能不会加载到已加载jQuery的页面上.在这种情况下出现了许多问题......
如果网页没有jQuery,我必须加载自己的jQuery.然而,这样做时似乎有一个微妙的时间问题.例如,如果我的窗口小部件在jQuery完成加载和执行之前加载并执行,我会收到jQuery is not defined错误.
如果网页确实有jQuery,我通常可以使用它.但是,如果jQuery版本是旧版本,我想加载自己的版本.但是,如果我自己加载,我需要以不踩它们的$变量的方式来做.如果我设置jQuery.noConflict()并且他们的任何脚本依赖$,那么我刚刚打破了他们的页面.
如果网页使用另一个javascript库(例如原型),我也需要对原型的$变量敏感.
由于以上所有,似乎更容易不依赖于jQuery.但是在我走这条路之前,我想先重写我的小部件代码.
我的代码的基本框架,包括时序错误和有时$错误,如下:
<script type="text/javascript" charset="utf-8">
// <![CDATA
if (typeof jQuery === 'undefined') {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '{{ URL }}/jquery.js';
head.appendChild(script);
}
// ]]>
</script>
<script type="text/javascript" src="{{ URL }}/widget.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的小部件具有以下结构:
(function($) {
var mywidget = {
init: function() {
...
}
};
$(document).ready(function() {
mywidget.init();
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
如果有任何指针或资源来实现可以在所有提到的环境中工作的小部件,那么他们将非常感激.
有没有一种简单的方法可以创建可扩展/可折叠的块,就像在官方市场应用程序中看到的那样?
市场应用程序的屏幕截图,当您单击"更多"按钮时,描述部分将展开动画:

我知道SlidingDrawer但它似乎不适合这样的东西 - 它应该被放在叠加中,并且不支持半开状态.
更新:
这是我的半工作解决方案.这是一个扩展的自定义小部件LinearLayout.它很有用,但不能很好地处理边缘情况,比如内容高度小于collapsedHeight参数.我确信有足够的凝视力,挖掘代码并试验怪癖可以修复.希望避免这样做,并通过使用现成的官方或第三方解决方案节省一些时间.无论如何,这里是代码:
package com.example.androidapp.widgets;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.LinearLayout;
import com.example.androidapp.R;
public class ExpandablePanel extends LinearLayout {
private final int mHandleId;
private final int mContentId;
private View mHandle;
private View mContent;
private boolean mExpanded = true;
private int mCollapsedHeight = 0;
private int mContentHeight = 0;
public ExpandablePanel(Context context) {
this(context, null);
}
public ExpandablePanel(Context context, AttributeSet attrs) {
super(context, …Run Code Online (Sandbox Code Playgroud) 我有一个div,其内容可能以各种方式改变:例如,其整个内容可以通过innerHTML重新加载,或者节点可以通过DOM方法添加.这反过来可能通过本机javascript或通过调用jQuery API或通过其他库间接发生.
我希望在div的内容改变为执行一些代码,但我绝对没有控制上如何将改变.事实上,我正在设计一个可供其他人使用的小部件,他们可以按自己喜欢的方式自由更改div的内容.当此div的内部内容发生更改时,可能还必须更新窗口小部件的形状.
我正在使用jQuery.有没有办法捕获这个div的内容已经改变的事件,但它发生了吗?
我正在编写一个应该嵌入其他人的网站(一种小部件)的Web应用程序.我正在使用Google Analytics跟踪在嵌入网站上访问我脚本的所有实例的所有人.问题是我不知道如何使用它,因此它不会干扰这些网站自己的Google Analytics帐户.我将跟踪器变量存储在命名空间中,所以我认为应该这样做,但我没有意识到GA将其设置存储在cookie中(__ utma,__ utmz等),并且这些cookie由两个跟踪器使用,如果在同一页面上有两个...例如,如果我使用_setVar在Google Analytics中存储某种用户定义的变量,并且嵌入网站也是如此,我们会覆盖彼此的值......
当然,如果谷歌提供了一种将cookie的名称更改为自定义的方法,那将是最简单的,但我找不到任何方法来做到这一点.我想过使用cookie域或路径强制单独的cookie,但这不起作用,因为如果我将域或路径设置为真实域/路径以外的其他内容,则重新加载后该页面的cookie不可读. ..
有没有人知道在一个页面上有两个跟踪器并让它们使用单独的cookie以便它们不会覆盖彼此的设置?
或者,如果那是完全不可能的 - 是否有任何其他分析服务具有与GA类似的功能?(它必须具有事件和广告系列跟踪等高级功能......)
我创建了一个小部件,单击该小部件可激活PendingIntent.问题是当我在屏幕上有多个小部件时,只有最新的小部件会启动PendingIntent.
我已经阅读了一些关于唯一请求代码的内容,但没有想到这一点.
任何想法如何我可以有多个小部件和PendingIntents为每个工作?
这是我的代码片段:
Intent openApp = new Intent(context, RunningTally.class);
openApp.putExtra("widgetId", appWidgetId);
PendingIntent pendingAppIntent =
PendingIntent.getActivity(context, 0, openApp, PendingIntent.FLAG_CANCEL_CURRENT );
views.setOnClickPendingIntent(R.id.openFull, pendingAppIntent);
Run Code Online (Sandbox Code Playgroud) 我必须开发一个将由第三方网站使用的小部件.这不是要在社交网站中部署的应用程序.我可以给站点人员一个链接,用作iframe的src,或者我可以将其作为JavaScript请求开发.
有人可以告诉我两种方法之间的权衡(IFrame与JS)吗?
我的类扩展了TabActivity
TabHost mTabHost = getTabHost();
TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1");
TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2");
tab1 .setIndicator("title tab1");
tab2 .setIndicator("title tab2");
mTabHost.addTab(tab1);mTabHost.addTab(tab2);
TabHost.setCurrentTab(0 or 1)
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我如何更改所选标签的背景图像或颜色?
如何从计时器中获取时间?我试过getText,getFormat,getBase等,但没有一个可以工作.
示例代码段:
Chronometer t = (Chronometer)findViewById(R.id.toptime);
long time = SystemClock.elapsedRealtime()-t.getBase();
Log.d(null,"Was: "+time); //time is not the proper time for some reason - it is a random number between 0 and 50
t.setBase(SystemClock.elapsedRealtime());
t.start();
Run Code Online (Sandbox Code Playgroud) 更新 - 可在此处找到截至2015年2月更新的综合比较:
2008年问题:
有许多优秀的,不那么优秀的Javascript GUI框架.我看过一些(只是表面上看).而且我无法想到他们中的任何一个
滚动到此问题的结尾以查看其他人的评论
Ext.js很多人都明白这个选择,因为它是最着名的框架之一.
优点:看起来很棒,大型社区,大量扩展/插件,GPL'ed
Disadvanatges:无法使用具有商业许可的第三方扩展(其中一些扩展具有杀手功能)
Backbase相对较少为人所知.令人联想到XUL的XML和Javascript的奇怪组合.但是,它已经是跨浏览器的
优点:看起来很好,非常可扩展,允许轻松整合一些非常整洁的东西
缺点:定价陡峭且受CPU限制(尽管可以在最多2个CPU上免费使用),论坛响应缓慢(虽然商业支持应该很快)
qooxdoo也很受欢迎.
优点: 请填写
缺点:代码略显凌乱(基于传闻)
YUI 填写描述
优点:组织良好的代码
缺点: 许多小部件仍处于测试阶段
Dojo 填写描述
优点:增加类的加载
缺点:明显感觉臃肿
jQuery UI的
优点:小部件彼此不依赖
缺点:在开发的早期阶段,很少有小部件
可能倾向于更广泛的接受: jQuery随ASP.NET MVC一起提供
怎么说你?你用了什么?为什么?你更喜欢用什么?为什么?在任何一种项目中
要更新您的输入...
看看Sergey Ilinsky的这篇优秀评论,它非常清楚地解释了当你想要浏览你的页面时应该选择哪个框架,用丰富的前端构建一个应用程序(有多个选择,不能少)
另一个线程中有趣的评论比较了jQuery,Dojo,Prototype,Mootools,Sproutcore和Cappuccino (问题已被删除).
我想在Qt中创建一个具有以下功能的自定义小部件:
为了提供一个想法,这里是一个类似的小部件(而不是Qt)的图像:

我已经有一个正常工作的框架,并在QDesigner中公开.我现在需要让它扩展/崩溃,这似乎并不那么简单.
我尝试使用resize(),sizePolicy(),sizeHint(),但这不起作用:当框架折叠时,我得到以下值:
sizeHint: (500,20)
size : (500,20)
closestAcceptableSize: (518,150)
Painted size: (518, 150)
Run Code Online (Sandbox Code Playgroud)
QLayout :: closestAcceptableSize不是小部件的一部分,因此我无法更改它.
任何提示或/和代码片段来实现这一点?
编辑:这是一个简单的例子.除了必要的我删除了所有.
main.cpp示例
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include "section.hpp"
using namespace myWidgets;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// Create the main Window
QWidget window;
window.resize(500,500);
window.setStyleSheet("QPushButton:{background-color:rgba(128,128,128,192);}");
// Create the main window layout
QVBoxLayout topLayout(&window);
QWidget *w1 = new QWidget();
w1->setStyleSheet("background-color:rgba(128,128,128,192);");
topLayout.addWidget(w1);
Section section(&window);
topLayout.addWidget(§ion);
QVBoxLayout inLayout(§ion);
QPushButton *button = …Run Code Online (Sandbox Code Playgroud) widget ×10
javascript ×5
android ×4
jquery ×2
c++ ×1
chronometer ×1
cookies ×1
frameworks ×1
iframe ×1
qt ×1
qwidget ×1
tabs ×1
time ×1
view ×1