我正在构建一个应该异步加载的javascript小部件.
问题是页面上可能有多个这样的小部件,并且应该通过{}向它发送一个选项数组来初始化小部件.
完成此任务的最佳方法是什么?我听说简单地设置onload或onreadystatechange并不适用于所有浏览器.
我已经检查了digg小部件,但我无法理解他们正在做什么,有人可以看看吗?
这是他们的一些代码:
(function () {
var s, s1, diggWidget = {
id: "digg-widget-1282651415272",
width: 300,
display: "tabbed"
};
if (window.DiggWidget) {
if (typeof DiggWidget == 'function') {
new DiggWidget(diggWidget);
} else {
DiggWidget.push(diggWidget);
}
} else {
DiggWidget = [diggWidget];
s = document.createElement('SCRIPT');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://widgets.digg.com/widgets.js';
s1 = document.getElementsByTagName('SCRIPT')[0];
s1.parentNode.insertBefore(s, s1);
}
})();
Run Code Online (Sandbox Code Playgroud)
因此,如果DiggWidget已经可用(由于多个实例而早先加载),如果DiggWidget是一个函数,它会生成一个新的小部件,否则DiggWidget将用作数组并将当前设置推送到它.
首先,为什么DiggWidget会成为一个功能?
如果窗口小部件是唯一的(或第一个),则异步添加脚本标记,不定义回调.
然后,看看widgets.js他们这样做:
在顶部:
(function () {
var A;
if (window.DiggWidget) {
if (typeof DiggWidget != "function") …Run Code Online (Sandbox Code Playgroud) 我非常喜欢这里给出的效果:
http://rascals.eu/templates/rt0802/portfolios/portfolio-2-columns/
但问题是,如果你看一下源代码,你会发现它没有 - 它都是通过jquery完成的,并且链接是这样创建的:
<a href="xxx.jpg" rel="lightbox[portfolio]" style="width: 446px; height: 205px" class="autoload hover" data-image_url="yyy.jpg"></a>
Run Code Online (Sandbox Code Playgroud)
可能在后台创建的图像,然后在加载时插入该位置.
但是,这可能以不同的方式,更符合标准的方式吗?任何人都可以指导我去任何资源/教程吗?
谢谢.
编辑:符合标准我的意思是:
img src指向正确的位置,以便在禁用js时仍然显示图像.
我以为语法:
var a, b, c = {};
Run Code Online (Sandbox Code Playgroud)
意味着这三个变量是分开的,而不是对同一个{}的引用.
这是因为{}是一个对象,这是标准行为吗?
所以,如果我这样做:
var a, b, c = 0;
Run Code Online (Sandbox Code Playgroud)
三者确实是分开的而不是参考?
谢谢,韦斯利
看到这个小提琴:
我已将第一列设置为以红色背景显示.
但是,奇数/偶数样式会覆盖它.即使添加了!important;
有什么方法可以解决这个问题吗?(无需添加类
tr.row_odd td {
background:#efefef;
}
tr.row_even td {
background:green;
}
.col1 { background:red !important; }
<table>
<col class="col1"></col>
<tr class="row_odd"><td>test</td><td>test</td></tr>
<tr class="row_even"><td>test</td><td>test</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud) 任何人都知道如何在IE7中使用它?
图像并排显示(由于溢出)而不是滑块.
http://tympanus.net/Tutorials/PortfolioZoomSlider/
我尝试设置overflow:hidden,.thumb_wrapper但下一张幻灯片的一部分仍然闪耀并覆盖箭头.
我正在使用第三方jsonp库进行jquery.在调用它时,您可以将缓存设置为true.
但是,在检入HTTP嗅探器时,似乎所有请求仍然被发送到服务器.
这与picasa,flickr和youtube API.
什么可能导致这种行为?它似乎不是浏览器特定的,因为我在多个浏览器中测试它并且所有行为都相同(不是缓存).
调用的URL不会从一个请求更改为另一个请求,并且调用如下所示:
$.jsonp({
url: url,
cache: true,
async: false,
dataType: 'jsonp',
data: $.extend({ url: options.dataUrl, method: lookupData.method }, fixedOptions),
callbackParameter: "jsoncallback",
success: function(data)
{
$.extend(datasourceOptions, lookupData.onData(data));
getData();
}
});
Run Code Online (Sandbox Code Playgroud)
关于我的设置唯一的"奇怪"的事情是,将调用.jsonp脚本通过一个包括阿贾克斯调用本身..莫非是这里的问题?听起来很遥远,但......
谢谢,韦斯利
编辑:好的,4个中有3个有Expires头设置..
但是,第四个没有,只有这些:
Cache-Control:private Vary:Accept-Encoding Access-Control-Allow-Origin:*Connection:close
(这是flickr)
那里发生了什么?
另外,是不是可以通过jquery以某种方式覆盖头缓存指令?
使用flot库,如何只在悬停在线上的那个位置时显示该点?我不希望所有的点一直都可见..
类似于谷歌的做法:请参阅第一个示例:http://code.google.com/apis/chart/interactive/docs/gallery/linechart.html
因为我需要结合多种图表类型,所以无法使用谷歌.我也喜欢谷歌,你不必将鼠标悬停在确切点上,足够接近并且也会触发工具提示.
可以这样做吗?还是其他任何图书馆?
编辑:这些人似乎都在使用flot,但我不确定他们是怎么做到的?https://www.portfolionumbers.com/tools/risk/report
至少在safari中,与动态添加的目标的所有链接都将在同一选项卡中打开.我希望所有链接都在新选项卡中打开,这是在HTML(静态)中指定目标时的默认行为.
有解决方法吗?
<html>
<body>
<script type='text/javascript' charset='utf-8' src='https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>
<script type="text/javascript">
$(document).ready(function() {
$('a').attr({'target': 'blank'});
});
</script>
<a href="http://www.google.com">google</a> - <a href="http://www.yahoo.com">yahoo</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)