Giter Site home page Giter Site logo

break-on-access's Introduction

Usage

Omg the cookie is being changed, but where? Give me a breakpoint when JS changes my cookies!

breakOn(document, 'cookie');

Some JS is getting the scrollTop value causing massive Recalculate Styles costs. Who is the perpetrator PERFetrator?

breakOn(document.body,'scrollTop', 'read')

This works really well as a snippet in the Chrome DevTools:

By default, breakOn will only break when JS attempts to change the value of a property. The third optional argument takes 'read' if you'd also like to break when values are read.

It is also possible to disable/enable a breakpoint by using methods provided by returned object.

    var bp = breakOn(document, 'cookie');
    // found it!
    bp.disable();
    // something else is up....
    bp.enable();

breakOn also supports Conditional Breakpoints when the 4th argument is a function. Say you know a property is being changed after the 4th change.

    var i = 0;
    var bp = breakOn(document, 'cookie', false, function(v) {
        return i++ >= 4;
    });

Or something is leaving a property undefined

    var bp = breakOn(document, 'cookie', false, function(v) {
        return typeof v === 'undefined';
    });

Authors

Dave Methvin, Paul Irish, fat, and these handsome people

Alternatives

History

Object.defineProperty(twttr, 'profile', {
    get: function () {
      debugger
    }
  , set: function (val) {
      debugger
    }
})

break-on-access's People

Contributors

ashmind avatar davatron5000 avatar morganrallen avatar paulirish avatar prayagverma avatar strd6 avatar tejasmanohar avatar tychio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

break-on-access's Issues

Publish as npm package

It would be great to have the option to install this as a package from a registry (npm).

add this option to devTools

This is such a handy snippet!

Can this be ported to dev tools to set a breakpoint on cookie set/change/remove
cookie

Help with Chrome v58?

I'm trying to use this on Chrome v58 using a snippet and the console like below, but it doesn't halt even though I know the scope contents is changing. Any ideas?

<run the snippet> -> undefined
bp = breakOn(angular.element(document.customer_form).scope().customer_form.email, '$error');
bp.enable();
<submit the form> -> continues as normal, expecting the browser to halt

Uncaught TypeError

breakOn(window, "closed");

closed is a global bool variable.

How can I detect, when it is changed? I get:
Uncaught This property is not writable, so only possible mode is 'read'.

Uncaught ReferenceError: breakOn is not defined

i took the javascript and pasted it in the Chrome console.
then i tried to run it but got the error Uncaught ReferenceError: breakOn is not defined.

But when i changed from
breakOn function(obj, propertyName, mode, func) { to var breakOn = function(obj, propertyName, mode, func) { it worked.

This should be available as a Chrome Developer Tools button out-of-the-box

My knowledge of Developer Tools in Chrome is somewhat imperfect, but AFAIK, this functionality is not available by default, but it could be very, very useful. Every once in a while I have to write this Object.defineProperty() hack for debugging purposes.

Can you consider implementing its functionality in Chrome natively (or maybe it's already there)?

Also, IIRC some libraries like Ractive were relying on Object.defineProperty() to implement observables/FRP, so native implementation won't mess with them.

Not an issue per se, a suggestion

For debugging functions, chrome has a debug method
for ex-

var analytics = {
  log : function(){
  }
}
debug(analytics.log)

Now on calling analytics.log(), the debugger stops inside the function
so for objects whose functions are being added to breakOn on read , maybe the debug construct can be used. However one issue with this is the user has to execute the breakonaccess script in the console itself, as the debug is part of command line API and hence is not available to snippets/bookmarklets etc. I could file a PR if the people like the idea

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.