我是一个对面向对象概念有很好理解的java开发人员(或者,我想是这样的).现在我正在学习设计模式(From Head first design patterns).我一直在阅读有关OOPS概念抽象的内容,以便简单地理解它,并且阅读更多有关它的信息让我比以前更加困惑.
据我所知,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而不必担心内部细节.但是,我不明白
如果我在任何地方都错了,请纠正我.
我试图从页面返回整个 windows 对象,然后遍历 puppeteer 之外的对象。
我正在尝试访问 Highcharts 属性中的数据,为此我需要访问 window 对象。正常的 javascript 代码类似于window.Highcharts.charts[0].series[0].data.
我认为最简单的方法是使用 puppeteer 访问该站点,然后将 windows 对象发回给我,然后我可以像任何其他 JS 对象一样在 puppeteer 之外使用它。
阅读文档后,我发现很难返回对象,因为它看起来只是将“窗口”放入 chrome 控制台。我不确定我错过了什么?
我已经阅读了文档,以下两种方法似乎应该有效?
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com', {waitUntil: 'networkidle2'});
// METHOD 1
// Create a Map object
await page.evaluate(() => window.map = new Map());
// Get a handle to the Map object prototype
const mapPrototype = await page.evaluateHandle(() => Map.prototype);
// Query all map …Run Code Online (Sandbox Code Playgroud) chromium google-chrome-extension node.js web-scraping puppeteer
无法访问动态生成的元素:这是我的json请求函数:
$.getJSON('/getJSON.php?selectorcat='+var1, function(jsonData){
var LI_list_html = '';
var sum = 0;
if(jsonData[0])
{
$.each(jsonData, function(i,value)
{
var catname = jsonData[i].name;
var id = jsonData[i].id;
var DIV_html = catname;
LI_list_html = LI_list_html+'<li class="selectorsub" data-catselectsub="'+id+'" id="SelectorSubcat_'+id+'">'+DIV_html+'</li>';
});
}
else
{
LI_list_html = 'No subcats there..';
}
Run Code Online (Sandbox Code Playgroud)
所以,当我得到这样生成的HTML:
<ul>
<li class="selectorsub" data-catselectsub="169" id="SelectorSubcat_169">CAT1</li>
<li class="selectorsub" data-catselectsub="170" id="SelectorSubcat_170">CAT2</li>
<li class="selectorsub" data-catselectsub="171" id="SelectorSubcat_171">CAT3</li>
<li class="selectorsub" data-catselectsub="172" id="SelectorSubcat_172">CAT4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我无法访问li元素:
$("[id^=SelectorSubcat_]").click(function() {
alert($(this).data('catselectsub'));
});
Run Code Online (Sandbox Code Playgroud)
我认为生成的元素不是现成的DOM,这就是为什么无法访问它们.
我有一个不寻常的问题。我的表格是这样的:
<form>
<button ng-class="{'btn-primary': ts.test.current == true}"
ng-click="$state.transitionTo('s.e.q');"
ng-show="ts.test.current && ts.test.userTestId">
View
</button>
<button ng-class="{'btn-primary': ts.test.current == true}"
ng-click="getTest(ts.test)"
ng-show="ts.test.current && !ts.test.userTestId">
Acquire
</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我需要的是回车键来触发当前按钮主要的动作。请注意,主按钮可以是两个按钮之一,具体取决于页面上其他项目的状态。
谁能建议如何做到这一点?我看到了对 ng-enter 指令的引用,但如果可能的话,我认为最好不要使用非标准指令。
这是我迄今为止尝试过的。不幸的是,当我点击进入时什么也没有发生:
<form ng-show="ts.test.current && ts.test.userTestId"
ng-submit="$state.transitionTo('s.e.q');">
<button ng-class="{'btn-primary': ts.test.current == true}"
type="submit">
View
</button>
</form>
<form ng-show="ts.test.current && !ts.test.userTestId"
ng-submit="getTest(ts.test)">
<button class="btn"
ng-class="{'btn-primary': ts.test.current == true}"
type="submit">
Acquire
</button>
</form>
Run Code Online (Sandbox Code Playgroud) 我们有一个node.js项目,其中有几个模块跨越多个Git存储库.模块之间存在依赖关系.
例如:
common模块驻留在自己的存储库中.
execution模块驻留在单独的存储库中,并具有(npm)依赖性common.
因此,目录结构中execution包括:(一次npm install被执行)common下node_modules.
我们的问题是,当开发人员正在开发时execution,他们有时也需要修改common.为了"看到"他们的更改,他们有我们目前使用的两个选项之一:修改node_modules/common(这是丑陋的,未跟踪的等),或修改common存储库,然后按+ npm安装他们的更改(虽然更清洁,非常麻烦).
我们想知道的是,如果这个工作流程有更好的选择......
我正在编写一个异步的javascript函数,消费者会调用它来获取某些数据.以下是我最初编写的简单实现(为了清楚起见,错误处理和其他内容被删除).
function getData(callback){
if (data is available as a JavaScript object){
callback(data);
}else{
getAsyncData(function(data){
//some transformations on data
callback(data);
});
}
}
Run Code Online (Sandbox Code Playgroud)
需要注意的重要一点是,如果数据已作为JavaScript对象可用,则getData可以快速返回数据.
我想将此实现替换为将一个promise对象返回给调用者的实现.这个小提琴显示了示例实现 - http://fiddle.jshell.net/ZjUg3/44/
问题 - 因为getData可以快速返回,即使在调用者使用then方法建立处理程序链之前,getData是否有可能解析 promise ?只是为了模拟这个,如果我在setTimeout函数中调用then方法(零延迟),则不会调用回调函数.如果我在setTimeout函数之外调用then方法,则调用callback.我不确定这是否是一个有效的关注或有效的用例.我是angularjs开发的新手,非常感谢你的观点:)
我在我的网络应用程序中完全成熟了谷歌地图版本2,具有获取路线,群集标记,选项卡式信息窗口,上下文菜单(右键单击)等功能.实现设计非常差,导致一些问题,所以现在我需要改进核心实现以更好地设计.我正在考虑升级到谷歌地图API的第3版.请建议,如果这是一件好事,我的所有功能都将运行良好(或者我会在更短的时间内完成所有功能的更换).或者我应该坚持谷歌地图API的版本2?
javascript google-maps google-api google-maps-api-3 google-maps-api-2
升级到OSX Yosemite后,我无法再使用我的开发机器(MacBook Pro)IP地址在移动设备上测试我的应用程序.例如,我曾经能够通过访问http://192.168.0.4:3000在手机上查看Rails应用程序,但现在我收到以下错误:
ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)
使用运行在http://192.168.0.4:9000的grunt服务器测试AngularJS应用程序时出现同样的错误
任何帮助将不胜感激.
我有一个仅在印度使用的应用程序。我正在使用 Cloudfront 分发来提供资产。我已经实施了版本控制策略,用于更改为构建而更改的资产的名称。
考虑到所有这些,我只需要使 index.html 无效,它负责使用版本化的其他资产。
我正在使用 cloudfront 失效来使 index.html 失效。我观察到,使这个单个文件失效总是需要 2 分钟以上的时间。我理解它是因为它使 42 个边缘位置的文件无效。我不需要将文件放置在 42 边缘位置并使其失效。如果有任何配置仅将文件保留在印度的边缘位置,我想失效会更快。
是否有类似的配置来限制在特定边缘位置复制文件。
infoWindow单击ClusterMarker时,我需要打开而不是缩放地图.我正在使用Gmaps util库MarkerClusterer来创建标记簇.我尝试在marksclusterer.js中更改以下行
ClusterMarker_.prototype = new GOverlay();
Run Code Online (Sandbox Code Playgroud)
同
ClusterMarker_.prototype = new GMarker();
Run Code Online (Sandbox Code Playgroud)
这样我就可以openInfoWindow()在集群标记中获得该功能,但这并没有成功.有一些错误.如果可能,请建议解决方案以便完成此操作MarkerClusterer.或者任何其他能够执行此操作的库.任何帮助将不胜感激.
我正在阅读一篇关于javascript调试会话的文章,其中作者需要一种方法来进入removeChild of Element以了解哪些代码在运行时删除了一个特定的元素.
因此他使用以下代码
javascript:void(Element.prototype.removeChild=function(){undefined()})
Run Code Online (Sandbox Code Playgroud)
据我所知,"undefined是全局对象的属性,即它是全局范围内的变量." (引自MDN)未定义的类型.
在下一行中,作者说他得到了堆栈跟踪(注意他正在使用opera和dragonfly).
我已经尝试过执行这个代码,如果使用的话,它可以工作,但是如果我尝试只使用它
undefined()
Run Code Online (Sandbox Code Playgroud)
它确实给了我错误"TypeError:undefined不是一个函数",我理解.
任何人都可以解释一下这些代码如何作为有效的javascript工作,以及它如何解决获取堆栈跟踪的问题.
javascript ×5
angularjs ×2
google-maps ×2
node.js ×2
abstract ×1
abstraction ×1
chromium ×1
git ×1
google-api ×1
java ×1
jquery ×1
macos ×1
npm ×1
osx-yosemite ×1
promise ×1
puppeteer ×1
repository ×1
undefined ×1
web-scraping ×1