Comments (7)
Released in https://github.com/tbranyen/diffhtml/releases/tag/v1.0.0-beta.27
from diffhtml.
Fix opened here @CetinSert #262
from diffhtml.
Can you post an example of what is breaking? The first delete is not in a try/catch intentionally for performance reasons. This code attempts to delete a property and if it succeeds, marks that property as safe for a given tag name. That's the only way the first delete will be reached.
from diffhtml.
Here is an absolutely minimal case: https://tw.uido.co/test/index.html
<script src="//webpdf.co/<>" type=module></script>
<pdf-file id=f src=//pdf.ist/web.pdf></pdf-file>
<div id=i><pdf-page off=f></pdf-page></div>
<script type=module>
import * as diff from '//esm.run/diffhtml'; window.diff = diff;
await customElements.whenDefined('pdf-page');
await diff.innerHTML(i, `<pdf-page of=f></pdf-page>`); // patch.js setAttribute does allowlist.add(blocklistName)
await diff.innerHTML(i, `<pdf-page off=f></pdf-page>`); // patch.js removeAttribute checks allowlist TypeError
</script>
from diffhtml.
The of
attribute is defined using Object.defineProperty
(with configurable
set to false
; as is default).
So of
- can be
set
(setAttribute
extendsallowlist
)
but - cannot be
delete
d (removeAttribute
check sameallowlist
)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_delete#examples
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#configurable
diffhtml/packages/diffhtml/lib/node/patch.js
Lines 92 to 94 in cab7fb3
setAttribute
and removeAttribute
would need different
allowlist
s
orblocklistName
s
for HTML custom elements that define attribute
↔ property
mirroring via Object.defineProperty
.
from diffhtml.
@tbranyen – I have demoed and described the problem/solution in the above 2 comments.
from diffhtml.
Darnit, so my Travis CI account just ran out of open source credits. The credits should reset in an hour and a half when the new month starts. Would be awesome to convert this project to GitHub Actions CI infra instead.
from diffhtml.
Related Issues (20)
- Issues with createState HOT 1
- More tests for babel transform plugin
- DevTools
- React compat layer HOT 1
- executeScripts does not work in Firefox HOT 8
- Function component: how to use props as slot like custom component? HOT 27
- Components do not mount if missing a return value HOT 1
- diffhtml/lite: `innerHTML(someNode, "only text")` fails HOT 3
- diffhtml: `process` is not defined HOT 6
- Tracking new HTML parser work HOT 3
- Cannot interpolate string attributes directly HOT 1
- createSideEffect runs on re-render even if already mounted HOT 3
- Parser bug where multiple elements on a single line fails
- Attributes without values breaks the parser HOT 3
- Can't run other packages with core using Deno HOT 2
- setHTML
- diffhtml.org is down HOT 6
- innerHTML fails to diff element when its children have been diffed previously HOT 5
- `window.diff` undefined on old iPad 9.3.5 Safari HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from diffhtml.